You want to be able to connect to your Linux workstation remotely, and you want to attach to your existing X session instead of starting a new independent one. You want to be able to roam about and log in from other locations, picking up where you left off. Or, you want to use this as a helpdesk tool so you can take control of user's Linux PCs remotely and fix problems yourself, instead of spending way too much time trying to talk users through a diagnosis and repair over the telephone.
Easy as pie with x11vnc. You need x11vnc on the remote server, and a VNC viewer on your local Linux workstation. After installing x11vnc, create a login password. In this example, it is stored in /home/carla/x11vnc/passwd. Make sure it is readable only by the user:
carla@windbag:~/x11vnc$ x11vnc -storepasswd 'password' passwd
stored passwd in file passwdcarla@windbag:~/x11vnc$ chmod 0600 passwd
Now, create a ~/.x11vncrc file. This is the user-specific configuration file that x11vnc will automatically look for. Put a line in this file pointing to your password file:
rfbauth /home/carla/x11vnc/passwd
Then, start up x11vnc:
$ x11vnc
07/01/2007 21:25:12 passing arg to libvncserver: -rfbauth
07/01/2007 21:25:12 passing arg to libvncserver: /home/carla/x11vnc/passwd
[...]
Using X display :0
Read initial data from X display into framebuffer.
07/01/2007 18:51:01 Using X display with 16bpp depth=16 true color
07/01/2007 18:51:01 Autoprobing TCP port
07/01/2007 18:51:01 Autoprobing selected port 5900
07/01/2007 18:51:01 screen setup finished.
07/01/2007 18:51:01 The VNC desktop is stinkpad:0
PORT=5900
Next, start the VNC viewer on the other PC, like this:
$ vncviewer stinkpad:0
Enter the password on the login screen, and you are logged in.
x11vnc automatically exits after a single
log in, so you won't be able to log in again without restarting it. To
leave it running continuously, use the -forever
and -bg
options:
$ x11vnc -forever -bg
-bg
sends it into the
background.
A common desire is to make x11vnc to run as a service, surviving reboots. It is difficult, and in my opinion dangerous, as its authentication is weakly protected, data are sent in the clear, and it requires configuring X Windows, which is just as insecure. I recommend starting it up only when you want to use it. A safer method is to log in to remote PCs with OpenSSH first, then start up x11vnc. Even better is to tunnel x11vnc over SSH, which the next recipe tells you how to do.
x11vnc has dozens of options; to see all of them, run:
$ x11vnc -opts
This command gives long descriptions for each one:
$ x11vnc -help
x11vnc home page: http://www.karlrunge.com/x11vnc