I am a bit of a newbie when it comes to using Linux. I usually use Windows for everything but I do currently have a machine running Ubuntu that I would like be to able to administer/occasionally use remotely using some kind of graphical remote desktop software.

I currently use vino as a VNC server on this machine however I find that this is slow, uses up a relatively large amount of CPU time on the host and it requires additional software to be installed on any computer that I use to access that machine.

If possible, I would like something compatible with Microsoft's Remote Desktop Protocol so I can use MSTSC, which is available on pretty much any machine I currently use (whether at work, at home or at a friend's house) without the need for the installation of more software.

It should be easy to install (or instructs on installation provided) due to my casual user status with Linux.

  • 2
    Personally, I'd run a local X server, and then use SSH X11 forwarding. Or run Xvnc (which is a much faster VNC server, but requires a bunch of setup). Or use a local X server and XDMCP. But I don't actually have much experience doing any of these with a Windows client (I almost exclusively run Linux). I leave these three suggestions for anyone to take and claim.
    – derobert
    Commented Feb 25, 2014 at 17:23
  • By “access remotely”, do you mean you want to run applications on the remote Linux machine and have them displayed on your local Windows screen, or do you mean that you have a local session on the Linux machine and you want to interact with it from the Windows machine? Unlike Windows, Linux has the former built in, and the latter is a bit more work. Commented Feb 25, 2014 at 20:51
  • The latter preferably, I'm going to have a play around with the suggestion you made in your answer though.
    – Flyk
    Commented Feb 26, 2014 at 11:22

5 Answers 5


From the Linux side, it is easy to run a Linux application on one machine and have it display on another machine. Linux's graphical interface is based on the X Window System (a.k.a. X11), which is network-transparent: applications send commands to the display subsystem, and these commands can be sent over the network.

The de facto standard for executing commands remotely on Linux is SSH.

All of this works out of the box on Linux, as long as the remote machine you try to reach has a public IP address (i.e. not behind a NAT). On the command line, you just run ssh darkstar myapp and myapp is executed on darkstar and displayed locally. (Depending on the configuration, you may have to run ssh -X darkstar myapp to activate “X11 forwarding”, i.e. forwarding of GUI commands.)

Whatever you do this way is completely unrelated from whatever GUI applications may be running on the local console of the remote Linux machine. Coming from a Linux perspective, the fact that most methods to access a Windows machine remotely have you run applications that display on the Windows machine's console feels really weird and limiting (if the remote machine is headless, why does it still have to have a GPU? And what if someone else wants to use the machine locally?).

Windows doesn't support X11 natively. As part of my Windows survival kit, I use Xming, an X11 server for Windows. Installation is straightforward: download and execute the installer. You need the fonts only to run traditional X11 applications that use server-rendered bitmap fonts. Xming has a paid version, but I've only ever used the open source release. In addition, you need an SSH application; PuTTY is the de facto standard these days. XMing ships with a portable version of PuTTY. There are also several collections of portable Windows freeware that include both (the Portable Freeware Collection, XMing+PuTTY on a stick, …). In the PuTTY configuration, under “Connection → SSH → X11”, make sure to enable X11 forwarding and set the “X display location” to localhost:0 (see e.g. this tutorial).

This gives you the best experience from a Linux perspective, but it does require installing software on the Windows side.

Alternatively, if you want a Windows-like experience where what you see on your local Windows screen is a copy of what is displayed locally on the remote Linux machine, you can run a remote desktop server on Linux and connect to it with a Windows client such as MSTSC. Xrdp is the only Linux RDP server that I know of; there is an Ubuntu package. Run xrdp as part of your session startup on Ubuntu, and when you're logged in on the console of the Linux machine, you'll be able to access that session from the Windows machine. Note that if you use RDP, you should take some security precautions, because the protocol is insecure; easiest would be to use an SSH tunnel (see above regarding SSH setup) and run a RDP client on the client machine to connect to the entrance of the tunnel (also on the client machine).


You might want to have a look at nomachine. It's been a while since I last used it, but back then it was a faster alternative to VNC or X11 forwarding, and as such worked pretty well. And they seem to have improved cross-OS support quite a bit recently.

  • If its been a while, they've switched over to a new protocol. Its faster, but it lets you remote access the current session like VNC, rather having the option of starting a seperate, persistant session like the nx3 protocol did. Commented Mar 6, 2014 at 10:43
  • @JourneymanGeek: I've always used VNC with TightVNC, starting a new session for that as well. But since nx3 was afaik based on X11 protocols, I can see that they must have changes things quite a bit to make it work accress platforms.
    – MvG
    Commented Mar 6, 2014 at 10:54

I find Team Viewer a great tool to acomplish this, it works on Windows, Mac OS and Linux (packaged as .deb, .rpm and the source is available if you want to compile yourself), also works on mobile device such as Android, iOS and Windows Phone.

The installation is pretty straight-forward, since you use Ubuntu here are the steps:

Download the .deb in here, choose wether 32bits or 64bits

The Simple way

  • Now you can right click te file and open through the Ubuntu Software Center and then click Install

The Command Line way

Open the terminal with Ctrl+alt+t locate the path where the .deb is and type this:

--For the 32-bit package:

sudo dpkg -i teamviewer_linux.deb

--For the 64-bit package:

sudo dpkg -i teamviewer_linux_x64.deb

In case “dpkg” indicates missing dependencies, complete the installation by executing the following command:

sudo apt-get install -f

here is the source of where im getting this information.

  • OP doesn't have GUI, how do you plan using the USC?
    – Braiam
    Commented Feb 25, 2014 at 14:38
  • remotely using some kind of graphical remote desktop software got caught in this sentence, sorry for the incovenience
    – riccivr
    Commented Feb 25, 2014 at 17:05

I use RealVNC. It's non-free (30 USD) but I find it low on CPU, is faster then my previous VNC server (TightVNC) and has many features such as:

  • configurable via GUI
  • encrypted connections
  • IP filtering to restrict the range of computers permitted to connect
  • idle timeout to terminate non-responsive connections
  • audit logging
  • etc.

It works on Linux/Windows/Mac and is straightforward to use. However, it's not compatible with Microsoft's Remote Desktop Protocol and it requires additional software to be installed on any computer that I use to access that machine. But I find that the ease of use as well as the number of features it has is worth it.


You can install FreeRDP, a free implementation of the Remote Desktop Protocol (RDP). It works on Linux and macOS. Check out the GitHub page.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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