I have tested out various VNC server implementations including:
- TightVNC
- RealVNC
- FreeNX
- X11VNC
Overall I'd say that the easiest to setup, good performance on dual-display configurations, cross-platform support for many clients, and most reliable for me has been X11VNC
.
FreeNX was very difficult to setup, though it was subjectively not that much better or faster than other solutions I tried, so the payoff wasn't as great as I'd hoped. FreeNX only worked with *nix clients at the time I tried it, and I needed a cross-platform solution. It could be that I mis-configured it and speed wasn't optimized for my connection somehow, although I'm not sure.
TightVNC and RealVNC worked reasonably well for me in the past. TightVNC was great on low-speed connections, while RealVNC was great for a slight bit of extra security (b/c it supported longer passwords w/custom block encryption algorithm). However, I had encountered some issues that made me decide to go with X11VNC. The first was that I had problems when rebooting a remote system, starting the VNC server again on it, and trying to connect to it when no X session was already running (just the gdm login screen). I was able to fix this with x11vnc
and this helpful script. The second problem that made me switch was that cross-platform and compatibility with many different VNC clients was also important to me. Most modern internet connections are fast enough to give a reasonably good experience when connecting to a remote system, even over SSH tunneling. You can experiment with passing some options when starting the x11vnc
server to make things snappier if you wish. Some that I've found are in my script.
To set up X11VNC:
- Run
sudo apt-get update
- Run
sudo apt-get install x11vnc
- Run
x11vnc -storepasswd
and input a password to protect your VNC from unauthorized access Note 1
- Run
x11vnc -usepw
to start the server Note 2
- Connect to the server with your favorite VNC client Note 3
Note 1: The password is by default stored in a file: ~/.vnc/passwd
. This file is encrypted by a symmetric key and a special block encryption algorithm. However the key and the algorithm are known, so it is possible to decrypt it (Please only decrypt your own password and don't be evil). Treat this file as a key to your computer, and protect it with file permissions of 0600
(chmod 0600 ~/.vnc/passwd
).
Note 2: You may add additional command line arguments if you wish, but this one is required for password protection
Note 3: Use SSH tunneling for security. VNC passwords are sent in plaintext over the network. To do this you'll create a tunnel with ssh -L 5900:localhost:5900
and then connect your VNC client to localhost
on port 5900
. If you don't care about security, or trust everyone on your network then connect your VNC client to the host directly.
For example:
- Given hostname
foo.local
=> connect to foo.local
on port 5900
- Given IP
192.168.1.123
=> connect to 192.168.1.123
on port 5900
You should take a look on the X11RDP.
It's really a great update of the Xrdp in addition you can customize the behavior as u need. The guy there "Kevin Cave" is genius and now he make some update so you can install x11rdp as Debian packages.
Also you can use the regular xrdp with specifying ubuntu-2d
as default session for xrdp. That should solve your problem with xrdp. To do that:
cd /home/user
echo "gnome-session --session=ubuntu-2d" > .xsession
sudo /etc/init.d/xrdp restart
Best Answer
Found this on the net, on this url: http://sigkillit.com/tag/xrdp
Customize Desktop Environment for xRDP Session
If you do not want to use the default desktop environment, you can customize it by creating a .Xclients file (X is capital!!!) in your home directory to launch the desktop environment you want and making it executable. In order to do this, open a terminal and run one of the following commands
Gnome 3:
Gnome Fallback:
KDE:
MATE:
Cinnamon:
Xfce4: