Let me give a summary of my project specification. I have a windows server and bunch of debian clients on the same LAN, Debian machines do not have x window system, they are bound to command line use. I am running a QT application on system start so user only interacts with my GUI before he sees anything else. According to my project requirements, we should allow system admins to view what end user is doing in debian machines at any time, therefore he should be able to see their screens at any time. He will be using a windows machine to do that. Therefore I am wondering if it is possible to share debian's screen with a windows server, and what would be involved in that.Do I need  VNC server setup on debian machines to accomplish that? Is there any other way?
remote desktop view of a Debian Lenny Machine
debian;remote;remote management
In the case you only have terminal usage on the client side (you said that you have no kind of xserver running on the client hosts) I have a suggestion how you can achieve this. It's actually a minimal but easily expandable example that shows how you can monitor a terminal session on a remote host. I don't know any special software for that and probably there are a number of ways to achieve this more elegant, so please do not expect to much. My first advice is to install rootsh on the client side. It's a wrapper for shells which logs all echoed keystrokes and  terminal output to a file and/or to syslog [rootsh website]Unfortunately your debian repository is not packed with it, so you have to make your own binaries. Which is easy to achieve since rootsh has no fancy dependencies. Further more you need socat, a tool for bidirectional data transfer.If you invoke rootsh like./rootsh -i -f logfilea new login shell starts an everything echoed on the terminal from this shell or any child process is written into logfile (also special characters originally intended for the tty). Now you can create a TCP-socket on the client withsocat OPEN:logfile,ioreeof TCP-LISTEN:22222,forkfrom which you can read from the admin's host. For instance with socat TCP:clientdomain:22222 STDOUTor with netcat i.e. telnet (windows binaries for socat are available). In the case you want to have a more secure data stream between the nodes you can also instruct socat to encrypt it via OPENSSL. You can find a great explanation on this in the article Securing Traffic Between two Socat Instances Using SSL.I admit that my approach has several flaws, but it suffices to illustrate what's possible without any special tools.