How to Install Xrdp Server (Remote Desktop) on Ubuntu 18.04
4 min read
Xrdp is an open-source implementation of the Microsoft Remote Desktop Protocol (RDP) that allows you to graphically control a remote system. With RDP, you can log in to the remote machine and create a real desktop session the same as if you had logged in to a local machine.
This tutorial explains how to install and configure Xrdp server on Ubuntu 18.04.
If you want an open-source solution for remote desktop access, go with VNC.
Installing Desktop Environment
Generally, Linux servers don't have a desktop environment installed. Our first step is to install X11 and a lightweight desktop environment that will act as a backend for Xrdp.
There are several desktop environments (DE) available in Ubuntu repositories. We'll be installing Xfce. It is a fast, stable, and lightweight desktop environment, which makes it ideal for usage on a remote server.
Type the following commands as a user with sudo privileges to install Xfce on your server:
sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Depending on your system, downloading and installing Xfce packages will take some time.
Xrdp package is available in the default Ubuntu repositories. To install it, run:
sudo apt install xrdp
When the installation process is complete, the Xrdp service will automatically start. You can verify that Xrdp is running by typing:
sudo systemctl status xrdp
The output will look something like this:
● xrdp.service - xrdp daemon Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2019-07-28 22:40:53 UTC; 4min 21s ago Docs: man:xrdp(8) man:xrdp.ini(5) ...
By default Xrdp uses the
/etc/ssl/private/ssl-cert-snakeoil.key file which is readable only by users that are members of the “ssl-cert” group. Execute the following command to add the
xrdp user to the group:
sudo adduser xrdp ssl-cert
That's it. Xrdp has been installed on your Ubuntu server.
Xrdp configuration files are located in the
/etc/xrdp directory. For basic Xrdp connections, you only need to configure Xrdp to use Xfce. To do so open the following file in your text editor:
sudo nano /etc/xrdp/xrdp.ini
Add the following line at the end of the file:
Save the file and restart the Xrdp service:
sudo systemctl restart xrdp
By default, Xrdp listens on port
3389 on all interfaces. If you run a firewall on your Ubuntu server (which you should always do), you’ll need to add a rule that will enable traffic on the Xrdp port.
To allow access to the Xrdp server from a specific IP address or IP range, in this example
192.168.1.0/24, run the following command:
sudo ufw allow from 192.168.1.0/24 to any port 3389
If you want to allow access from anywhere (which is highly discouraged for security reasons) run:
sudo ufw allow 3389
For increased security, you may consider setting up Xrdp to listen only on localhost and creating an SSH tunnel that securely forwards traffic from your local machine on port
3389 to the server on the same port. Another secure option is to install OpenVPN and connect to the Xrdp server trough the private network.
Connecting to the Xrdp Server
Now that you have set up your Xrdp server, it is time to open your Xrdp client and connect to the server.
If you have Windows PC, you can use the default RDP client. Type “remote” in the Windows search bar and click on “Remote Desktop Connection”. This will open up the RDP client. In the computer Field enter the remote server IP address and click “Connect”.
In the login screen enter your username and password and click “OK”.
Once logged in you should see the default Xfce desktop. It should look something like this:
You can now start interacting with the remote XFCE desktop from your local machine using your keyboard and mouse.
If you are using macOS, you can install the Microsoft Remote Desktop application from the Mac App Store. Linux users can use an RDP client such as Remmina or Vinagre.
Installing an Xrdp server allows you to manage your Ubuntu 18.04 server from your local desktop machine using an easy to use graphic interface.
If you have questions feel free to leave a comment below.