VNC is "Virtual Network Computing" and is a crossplatform method of allowing remote access to desktops (Windows or Unix/Linux, Mac and others)). It is conceptually like using Terminal Services or PcAnywhere etc for Windows but is license free and of course capable of serving Linux/Unix machines also.
The origination of this was an AT&T project; you can find it at http://www.realvnc.com/ now. There have been a number of forks spun off from this, of which the most popular (right now anyway) is Tight VNC, which uses a "tighter" compression scheme to get better performance. That may still be true when you read this, or someone else may have come up with something even better. So although this article will be using TightVNC and the Mac client Chicken of the VNC, you should be more concerned with the overall concepts rather than the specific implementation. You also need to be aware that your choice of a viewer is also important: for example, the Linux vncviewer I used did not properly display the Windows VNC desktop, but the Mac viewer did. If you aren't getting the results you need, the viewer may be the source of your problems. Also keep in mind that any feature or limitation I mention may not be present in some other version.
The final thing that Windows users may have a little trouble grasping is the multiuser orientation of VNC on Unix platforms. For example, as I write this, I have two vncservers running on a Linux box: one was started by root, the other by the user apl. I am connected to the root server from a Windows 98 machine, and to the apl server from my Mac iBook. I also have a vncserver running on the Windows 98 box, have connected to that from my iBook, and am using THAT machines connection to the Linux vncserver too.
I can make multiple connections to the same vncserver: if I connect to apl's vncserver multiple times, each connection sees the same view: if I press enter on one connection, any other connection sees that. That's great for training sessions and demos. Why pay for expensive connections like NetMeeting etc. when this is free?
Finally, each Unix user can have multiple vncservers running. If you aren't confused yet, you obviously aren't a Windows user. These would be totally independent sessions, and none of them have anything to do with any Unix desktop that happened to be running when vncserver is started. In fact, you can start vncserver from a character mode command line, and you can startup another one right after that. The very first time you start it, it will ask for a password: that password will be used for ALL vncservers. You can change it with the "vncpasswd" command
Windows is different. When you start up vncserver on Windows a user that connects to it sees your Windows desktop, just as you are seeing it. This is very different on the Unix/Linux versions: the vncserver is a completely different login session on Unix and Linux. If you WANT a vncserver that serves up your current Unix desktop, there's apparently a GEMSVNC that does that, but I was unable to get to the web site at all.
You would think that because Windows XP is multiuser, you could have multiple users running VNC servers. Indeed you can, but you can only use the one that has the currently active user - switch away, and that server goes black, and in my testing, can't even be used again. Windows XP is not really multiuser.
Before we go any farther, understand that VNC is full of security problems, and many of them are just because of its basic nature. If you are using this over the internet, you probably want to run this over an ssh tunnel, and you probably want to restrict access with your firewall too. Of course, within your office as I am doing here doesn't need that, but is still a great tool: I can access QuickBooks on my wife's computer without getting up and going to it, and she can see my calendar without coming over here.
Setting up and running vncserver on Windows is trivial. On Unix, because it uses X11, it isn't quite as easy, though simply running "vncserver" after installing it will startup a simple server running twm and an xterm. That's probably not what you had in mind: if an xterm were all you needed, you'd just ssh to the box, right? To get my KDE desktop running, I made two changes: first, I replaced ~/.vnc/xstartup with one line:
and then created a ~/.vnc/.xsession file that contained "/usr/bin/startkde". That gave me my ordinary KDE desktop.
You are supposed to be able to startup vncserver that uses XDMCP so that your connection would be presented with a login dialog rather than being already logged in. So far, I haven't been able to make that work, but I'll keep chipping away at it and will report back here when I figure out what I'm doing wrong.
If you found something useful today, please consider a small donation.
Got something to add? Send me email.
More Articles by Tony Lawrence © 2010-10-30 Tony Lawrence
Whenever the literary German dives into a sentence, that is the last you are going to see of him till he emerges on the other side of his Atlantic with his verb in his mouth. (Mark Twain)