Leading a mobile lifestyle, one of the most crucial application for me is the possibility to access the screen, mouse and keyboard of remote computers to support friends and loved ones when they ask for help with their computers. On my end, I am using Remmina, a VNC compatible remote viewer. On Windows hosts, I've been relying on Tightvnc server for years and on Ubuntu hosts, the built in Vino server has served me well. Unfortunately, Vino has developed some serious issues over the years.
In the current Ubuntu 12.04 LTS (Long Term Support) and also in the current Ubuntu 12.10, Vino behaves very strangely on all machines I tried it with. The screen refreshes only very slowly in 12.04 to the point of being unusable and in 12.10, vino fully occupies one processor core and has interoperability issues with Remmina. I was really disappointing about this because without being able to support an Ubuntu installation remotely I can't recommend any of my friends to make the switch from Windows.
I hoped that the situation would improve over time, with Ubuntu fixing whatever is wrong with Vino. Unfortunately even a year later the situation has not improved. So I set out a couple of weeks ago to look for alternatives. Finally I came across X11VNC, available in the Ubuntu distro so no complicated software installation is required. I never heard about it before so you can imagine that I was a bit sceptical . Why should it be any better than Vino I thought? But I gave it a try anyway and was surprised of how easy it is to set up and I've been using it for several weeks now without any major hick-ups.
To get going, just ensure that the Vino VNC Server built into Ubuntu is not active (by default it is switched off). Before starting X11VNC for use, create a password on the remote machine with the following command to ensure that only authorized people can access it:
And once that is done, the server is started with the following command:
x11vnc -usepw -display :0
With this command the VNC server is started and stoped once the first client that attaches to it exits. There are also options to make the server run persistently or even as a service.
And one feature that I really find useful, which Vino didn't even have in the first place, is being able to make reverse connections, i.e. the person that requests help can connect back to you so there is no hassle with finding out IP addresses, creating NAT forwardings, etc. etc. in the network of the person that is to be supported. Here's the command for it:
x11vnc -usepw -display :0 -connect x.x.x.x (x.x.x.x being an IP address or host name)
Works like a charm! And finally, there's even an option to encrypt the data going over the line with built in SSH support. There we go, simple to install, simple to use, big problem fixed!