You’re in one room, sitting at a PC; the data you want is in another, on a computer running Ubuntu. If both computers are in the same house, no problem; but what if they’re in different offices? It might be a bit of a walk!
The answer, therefore, is setting up a remote desktop connection. Learn how to set up a remote desktop from Windows to Ubuntu.
Why Remote Connect to Ubuntu From Windows?
There are several reasons why you might want to remote connect to your Ubuntu computer. Perhaps you’re at work and need to log into your home computer. Alternatively, you might have an Ubuntu PC in one room, your Windows PC in another. Maybe you want to run updates on Ubuntu, or access files.
Alternatively, you might be running an Ubuntu server, for data, a website, even a game. Either way, a method of setting up a remote connection will save a lot of time and effort.
You have three key options for establishing a remote connection with an Ubuntu machine running the default desktop environment:
- Remote Desktop (RDP)
- Virtual Network Computing (VNC)
- Third party remote desktop software
First, however, you need to make some preparations:
- Enable port forwarding on the remote device’s router
- Find the IP address
- Install SSH
Let’s look at these in turn.
Prepare Windows RDP to Ubuntu Connections
Remote access solutions are simple to set up and manage across the same network. However, if you’re working from home, this instantly complicates things.
To use VNC and RDP with a PC on a different network, you’ll need to enable access to the remote computer via its router. This is done using “port forwarding.” Before you set this up, however, you’ll need the IP address.
Find Your Ubuntu PC’s IP Address
Before you can establish a connection to your Ubuntu device over RDP or VNC, you’ll need the IP address.
The first way is the easiest. Physically go to the Ubuntu machine, press Ctrl + Alt + T to open the Terminal, and input the command:
Look for the “inet addr” against the connection you’re currently using. For instance, if you’re on Wi-Fi, look for wlan0. If the computer is connected to the network for Ethernet, look for eth0.
Another way to find the IP address is to find the connection icon in the panel, right-click, and select Connection Information. You’ll find the IP address listed here.
Neither of these options open? You can also connect to your router directly, via your computer’s browser.
Once signed into the router’s admin console, you’ll be able to see which devices are connected. Just look for your Ubuntu device name, find the IP address, and make a note of it for later.
Enable Port Forwarding
To access a computer on another network (e.g. your work network) you need to enable port forwarding on the router where your Ubuntu PC is located.
Start by establishing the IP address of the router. You can use the ip r command for this, with grep to specify the default:
ip r | grep default
Make a note of the IP address, then open it in your browser to display the router’s admin console. Enabling port forwarding is simple:
- Look for the Port Forwarding settings
- Create a New Rule labeled Remote Desktop
- Set the Internal Port number to 3389
- Set the External Port number to 3389
- Input the IP address of the Ubuntu PC
- Click Save
Note that these steps are generic and will differ depending on your router. For detailed steps, check your router documentation.
Once saved, you should be able to RDP into the Ubuntu PC remotely via your organization’s static IP address. If your employer does not use a static IP (unlikely, but it happens) then use a dynamic DNS provider instead.
Note: your organization’s system admin can set up port forwarding if you’re not using commercial remote desktop tools.
Set Up Access Using SSH
To save time you might want to install PuTTY on your PC (or just try the built-in Windows SSH function ). This enables you to set up an SSH connection, which gives remote access to the Ubuntu command line.
To be clear: this isn’t a remote desktop option; there is no mouse control. But it is useful to have to remotely install the tools you’ll be using. SSH is often disabled by default, however, so if it is not installed, you’ll need to fix this.
In short, it depends on which Ubuntu version you’re using, and whether you’ve used SSH previously.
Once installed via the terminal (sudo apt install openssh-server) you’ll be able to make a remote connection. Simply enter the IP address and the Ubuntu username and password. You can then use the terminal to install the tools you need for RDP and for VNC.
1. Remote Access Using Remote Desktop Protocol
The easiest option is to use Remote Desktop Protocol or RDP. Built into Windows, this tool can establish a remote desktop connection across your home network. All you need is the IP address of the Ubuntu device.
While the necessary software is pre-installed on Windows, you’ll need to install the xrdp tool on Ubuntu. To do this, open a Terminal window (Ctrl + Alt + T) and enter:
sudo apt install xrdp
Follow this with
sudo systemctl enable xrdp
Wait for this to install, then run the Remote Desktop application in Windows using the Start Menu or Search. Type rdp then click on Remote Desktop Connection. With the app open, input the IP address in the Computer field.
Next, click Show Options and add the Username for the Ubuntu PC. You can click Save to keep these settings for reuse on another occasion.
Click Connect to start the connection and input the Ubuntu account password when prompted. The connection will then be established, giving you full mouse and keyboard access to your remote Ubuntu computer. If you plan to use this connection often, you can create a configuration file for it to save time.
Troubleshooting RDP to Ubuntu
While RDP is a great option for remote connecting to your Ubuntu PC, it’s unreliable on Ubuntu 18.04 LTS. There appears to be an issue establishing a remote connection while already logged into the same account on Ubuntu.
As such, the simple way around this is to simply log out of the Ubuntu computer.
If this isn’t possible, try switching the RDP connection from using the Xorg server to using X11rdp. Wait for that to fail then try Xorg again.
You might also attempt connection after restarting the Linux machine.
Ubuntu 20.04 LTS should include a fix for this problem.
2. Connect to Ubuntu from Windows With VNC
Another option with full remote desktop functionality is VNC (Virtual Network Computing). This requires a client application on the Windows PC and a server on Ubuntu.
On the remote PC, install the TightVNC Server component after checking for updates:
sudo apt update
Then install the server utility:
sudo apt install tightvncserver
You’ll then need to run it:
At this point you’ll be prompted to set a password for the connection. Make a note of the desktop number, usually :1.
Now that TightVNC Server is set up on Ubuntu, you’ll need to install the client on Windows. This can be downloaded from www.tightvnc.com/download.php—make sure you choose the right version, as it is available in 32-bit and 64-bit flavors.
TightVNC tools are only available as a bundle, so once installed, look for TightVNC Viewer in Windows search.
Once you’ve launched the viewer, input the IP address of the Ubuntu box in Remote Host, followed by the desktop number. So, it might look like this:
Input the password when prompted and commence your remote desktop activity!
Making TightVNC More Secure
By default, TightVNC will encrypt your password, but nothing else. This makes it insecure for connections over the internet. Fortunately, security can be enhanced, thanks to SSH and Xming.
To use this, download and install the Xming tool for Windows from Sourceforge. Once this is done, look for the desktop shortcut, right-click, and choose Properties.
Look for the Shortcut tab, and in the Target field, enter the following:
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow
Click Apply to save the change, then OK. Double-click the icon to run Xming, then open PuTTY. Here, expand the menu on the left to Connection > SSH > X11.
Check Enable X11 Forwarding, then return to Session at the top of the menu.
Enter the IP address for the remote device and click Open. Moments later, a secure connection to the remote Ubuntu desktop will be available.
3. Remote Desktop to Ubuntu With Commercial Tools
Everything you’ve learned so far is standard if you need to remotely access a Linux PC on your local network. If you need to go beyond that, then the steps to enable port forwarding will help.
But what if you have no intention of accessing your router? If this seems too complicated, then third-party commercial software designed to facilitate remote desktop, is required. Several are available, but not all support Linux.
We suggest you try out:
- NoMachine: initially released as a Linux remote desktop tool, this is now available across all major platforms. Install on the target computer, then on your local machine, and set up a remote connection.
- Chrome Remote Desktop: uses your Google account to manage remote access via the Chrome browser.
- TeamViewer: a well-known commercial remote desktop solution, this offers Linux software. Simply install client and host software beforehand. Also offers a host app for remotely accessing Raspberry Pi devices.
Note that these tools require setting up before use. If you have a colleague near the remote PC, they might be able to help. See our list of remote access tools for more suggestions.
Choosing the Right Ubuntu Remote Desktop Solution
Which remote desktop tool for connections between Ubuntu and Windows should you use?
Three main options are available:
- RDP: this uses the Windows Remote Desktop Protocol, via the open source xrdp implementation.
- VNC: Virtual Network Computing is an alternative to RDP, but less secure.
- Commercial remote software: most of these require minimal set up and support Linux.
You can also use SSH to issue some remote instructions to your Ubuntu PC.
We’ve shown you three ways to establish a remote connection to your Ubuntu computer or server from Windows. Each has its advantages and disadvantages. But if you just want to dip into Ubuntu, try the Windows Subsystem for Linux on Windows 10?