How can I access and remotely control an Ubuntu 10.04 machine from my Windows XP machine. I googled this subject, and noticed that there are several options: someone people use VNC, while some use Remote Desktop Protocol, etc.

Which is the most secure and efficient tool available?

Update: My Windows machine and Ubuntu machine are far away from each other (one is at home while the other is in my office); that's they are in different networks but both are connected to Internet.

  • 1
    I believe the most secure is vnc tunneled over ssh, but I don't recall off the top of my head how to set that up. It shouldn't be that hard, though - look up how to set up a vnc server, how to set up an ssh tunnel, and make the ports match up. – Kevin Oct 31 '11 at 21:35

Try NoMachine and check out FreeNX. I worked remotely for almost two years using NoMachine. It is quite responsive compared to VNC, which I tried briefly but couldn't stand because of the typing lag.


So, as I said in a comment, the most secure way is vnc over an ssh tunnel. It might not be the fastest because of the ssh encryption. I've just set this up on my machines, so I'll show how to set up the tunnel after you've gotten the server running.

Set up the tunnel from the client (windows) machine:

ssh -N -f -L 5901:remotehost:5901 -l remoteuser remotehost

There, easier than it sounds. Let's go through the options:
-N tells ssh not to execute a command (we don't want a shell, just the port forwarding).
-f prompts you for a password if necessary, then goes into the background. I suggest you set up a key pair for authentication, then you don't need a password and could even set this up to run at boot. Though, from a laptop you probably don't want that.
-L tells ssh to listen on this machine at port 5901 (the first), and when a program connects there, ssh sends everything it receives to itself on the remote machine, where it then connects it to that machine's port 5901 (the second).
-l tells ssh to use remoteuser as the username. If you have the same username on both machines, you don't need this.

Note that if VNC runs on a different port (5900, perhaps), you'll need to change at least the second port number.

Now, to connect, simply type:

vncviewer -user remoteuser localhost

Again, if you have the same username on both machines you can leave out the -user argument. If you need a different port,

vncviewer -user remoteuser localhost::localport

It may prompt you for a master password to start the vnc connection, but either way if all goes well you should see a login screen. Log in and work as usual.


TightVNC works well with Ubuntu, and has a Windows EXE frontend. I believe to install it on Ubuntu it's:

sudo apt-get install tightvncserver

You can get the Windows binary from their website


TeamViewer really popular software atm. Bad thing it isn't open source, but everything else is just perfect. Definitely worth trying. Most effective side of this program - speed. TightVNC looks like best choice otherwise.


Your question isn't specific enough to know what you're actually looking for. If you want remote desktop type capabilities, then one of the many provided answers will do what you want.

If, on the other hand, you are wanting to use the same mouse and keyboard to control a second computer (with its own monitor), then synergy should do exactly what you want, and it works in Windows, Linux, and Mac.


There are security issues, but RDP is far more efficient than VNC. It's like vector graphics vs. rastor graphics. xrdp is a good server for Ubuntu (sudo apt-get install xrdp), and "Remote Desktop Connection" for Windows is a client that works with RDP.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.