Cyberithub

How to Install Xrdp on Ubuntu 22.04 LTS (Jammy Jellyfish)

Advertisements

In this article, we will see how to install Xrdp on Ubuntu 22.04 LTS (Jammy Jellyfish). Xrdp is a free and open source implementation of Remote Desktop Protocol(RDP) Server in Linux/Unix based systems. This allows Linux and Unix based systems to accept remote desktop connection from multiple RDP Client systems including Microsoft Remote Desktop Client. By default, RDP transport is encrypted using TLS by default. Xrdp supports not only graphics remoting  but also two-way clipboard transfer, auto redirection and drive redirection. More on official website. It is also very easy to install and use. Here we will see the steps to install Xrdp on Ubuntu 22.04 LTS Server in great detail.

 

How to Install Xrdp on Ubuntu 22.04 LTS (Jammy Jellyfish)

How to Install Xrdp on Ubuntu 22.04 LTS (Jammy Jellyfish)

Also Read: How to Install librtlsdr-dev Package on Ubuntu 20.04 LTS (Focal Fossa)

Step 1: Prerequisites

a) You should have a running Ubuntu 22.04 LTS with X Server(Desktop Environment) installed.

b) You should have sudo or root access to run privileged commands.

c) You should have apt or apt-get utility available in your Server.

d) You should have a remote desktop client available.

 

Step 2: Update Your Server

Before installing Xrdp packages, it is mandatory to look for all available updates from default Ubuntu repo and install it using sudo apt update && sudo apt upgrade command as shown below.

cyberithub@ubuntu:~$ sudo apt update && sudo apt upgrade
Hit:1 https://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 http://in.archive.ubuntu.com/ubuntu jammy InRelease
Hit:3 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:4 http://in.archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:5 http://in.archive.ubuntu.com/ubuntu jammy-backports InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
4 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
grub-common grub-pc grub-pc-bin grub2-common
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.

 

Step 3: Install Xrdp

In the next step, you can install Xrdp from default Ubuntu repo by using sudo apt install xrdp command as shown below. This will download and install the package along with all its dependencies.

cyberithub@ubuntu:~$ sudo apt install xrdp
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libfuse2 xorgxrdp
Suggested packages:
guacamole
The following NEW packages will be installed:
libfuse2 xorgxrdp xrdp
0 upgraded, 3 newly installed, 0 to remove and 4 not upgraded.
Need to get 672 kB of archives.
After this operation, 3,710 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://in.archive.ubuntu.com/ubuntu jammy/universe amd64 libfuse2 amd64 2.9.9-5ubuntu3 [90.3 kB]
Get:2 http://in.archive.ubuntu.com/ubuntu jammy/universe amd64 xrdp amd64 0.9.17-2ubuntu2 [517 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu jammy/universe amd64 xorgxrdp amd64 1:0.2.17-1build1 [65.3 kB]
Fetched 672 kB in 2s (317 kB/s)
........................................................

 

Step 4: Verify Installation

After successful installation, you can verify the installed files path by using dpkg -L xrdp command as shown below.

cyberithub@ubuntu:~$ dpkg -L xrdp
/.
/etc
/etc/default
/etc/default/xrdp
/etc/init.d
/etc/init.d/xrdp
/etc/pam.d
/etc/pam.d/xrdp-sesman
/etc/xrdp
/etc/xrdp/km-00000406.ini
/etc/xrdp/km-00000407.ini
/etc/xrdp/km-00000409.ini
/etc/xrdp/km-0000040a.ini
/etc/xrdp/km-0000040b.ini
/etc/xrdp/km-0000040c.ini
/etc/xrdp/km-00000410.ini
/etc/xrdp/km-00000411.ini
/etc/xrdp/km-00000412.ini
..........................................

 

Step 5: Check Service Status

You also need to verify Xrdp daemon status by using sudo systemctl status xrdp command as shown below. If the port is allowed then by default it should be in running status as you can see below. You can also use sudo systemctl start xrdp or sudo systemctl restart xrdp to start or restart daemon service.

cyberithub@ubuntu:~$ sudo systemctl status xrdp
● xrdp.service - xrdp daemon
Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-06-22 00:27:55 IST; 5min ago
Docs: man:xrdp(8)
man:xrdp.ini(5)
Process: 37872 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
Process: 37880 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 37881 (xrdp)
Tasks: 1 (limit: 2277)
Memory: 1.1M
CPU: 28ms
CGroup: /system.slice/xrdp.service
└─37881 /usr/sbin/xrdp

Jun 22 00:27:54 ubuntu systemd[1]: Starting xrdp daemon...
Jun 22 00:27:54 ubuntu xrdp[37880]: [INFO ] address [0.0.0.0] port [3389] mode 1
Jun 22 00:27:54 ubuntu xrdp[37880]: [INFO ] listening to port 3389 on 0.0.0.0
Jun 22 00:27:54 ubuntu xrdp[37880]: [INFO ] xrdp_listen_pp done
Jun 22 00:27:54 ubuntu systemd[1]: xrdp.service: Can't open PID file /run/xrdp/xrdp.pid (yet?) after start: Operation not permitted
Jun 22 00:27:55 ubuntu systemd[1]: Started xrdp daemon.
Jun 22 00:27:56 ubuntu xrdp[37881]: [INFO ] starting xrdp with pid 37881
Jun 22 00:27:56 ubuntu xrdp[37881]: [INFO ] address [0.0.0.0] port [3389] mode 1
Jun 22 00:27:56 ubuntu xrdp[37881]: [INFO ] listening to port 3389 on 0.0.0.0
Jun 22 00:27:56 ubuntu xrdp[37881]: [INFO ] xrdp_listen_pp done

 

Step 6: Add User

Then you need to add the xrdp user to group ssl-cert using sudo adduser xrdp ssl-cert command as shown below. This will allow xrdp user to read ssl-cert-snakeoil.key(an ssl certificate key) placed under /etc/ssl/private directory.

cyberithub@ubuntu:~$ sudo adduser xrdp ssl-cert
Adding user `xrdp' to group `ssl-cert' ...
Adding user xrdp to group ssl-cert
Done.

After adding xrdp user, you need to restart the service by using sudo systemctl restart xrdp command as shown below.

cyberithub@ubuntu:~$ sudo systemctl restart xrdp
[sudo] password for cyberithub:

 

Step 7: Allow Port (Optional)

If you are using firewall in your system then you need to allow incoming requests from RDP client system. For example, in our case Microsoft Remote Desktop Client having IP 192.168.0.106. So to allow incoming connection request from this client system, we need to run sudo ufw allow from 192.168.0.106 to any port 3389 command on Xrdp server.

cyberithub@ubuntu:~$ sudo ufw allow from 192.168.0.106 to any port 3389

You can also allow traffic for entire subnet instead for just one ip. Then you need to reload the firewall using sudo ufw reload command as shown below.

cyberithub@ubuntu:~$ ufw reload

Finally, verify the port status by using sudo ufw status command as shown below.

cyberithub@ubuntu:~$ ufw status

 

Step 8: Connect to Xrdp Server

To connect Xrdp Server from a Windows 10 machine, you need to open Run by Pressing Windows+R button and then type mstsc there to open Remote Desktop Connection as shown below. Here you need to provide the IP of your Xrdp Server. For example, in my case the IP of Xrdp server is 192.168.0.104 so I am providing it here and then click on Connect.

How to Install Xrdp on Ubuntu 22.04 LTS (Jammy Jellyfish) 2

After clicking on Connect, you might see two different type of pop up screen depending on if you have restarted Xrdp daemon or not. If you forgot to restart then you will see below type of pop-up screen while trying to connect. Even if you click Yes here, you won't be able to connect to Xrdp Server.

How to Install Xrdp on Ubuntu 22.04 LTS (Jammy Jellyfish) 3

But if you have restarted the service then you will see below type of pop-up screen to connect. You can ignore below certificate error and proceed towards the connection by clicking on Yes.

How to Install Xrdp on Ubuntu 22.04 LTS (Jammy Jellyfish) 4

You will see below window where you will be asked to provide username and password of Xrdp Server. It is important to remember here that since Xrdp supports only one Xsession so you need to logout from all the sessions before login through RDP Client. Once done, click on OK to connect.

NOTE:

Please note that sometimes after clicking on OK, it won't connect and might redirect you back to the RDP Client window. In that case, you need to restart your Xrdp server once and see if it helps.

How to Install Xrdp on Ubuntu 22.04 LTS (Jammy Jellyfish) 5

After successful connection, you will see below desktop screen of your Xrdp Server. You can now proceed with your work as usual on this Server.

How to Install Xrdp on Ubuntu 22.04 LTS (Jammy Jellyfish) 6

Leave a Comment