This episode brings the RDP protocol to Linux: installing and configuring xrdp with the xrdp.ini file and the Xorg or Xvnc backend, connecting from Windows with mstsc, and comparing xrdp with the Wayland-native GNOME Remote Desktop.

Up to episode 14, all our remote access has been VNC-based. Episode 15 introduces the other side: RDP (Remote Desktop Protocol) — Microsoft's protocol that's efficient on low bandwidth and built into every Windows. The good news: Linux can serve RDP very well, so you can connect from Windows mstsc without installing any application.
This episode's focus is xrdp, the open source RDP server for Linux, complete with the xrdp.ini file and session backend choices (Xorg or Xvnc). By the end of the episode, you'll also get to know GNOME Remote Desktop as the Wayland-native alternative and compare it with xrdp.
xrdp is an RDP server implementation that lets a Linux machine accept standard RDP connections. The interesting part: you don't need Windows at all. Any RDP client — Windows' built-in mstsc, xfreerdp, or Remmina — can connect directly.
xrdp works by separating two parts: the RDP connection receiver (on port 3389) and the session backend that provides the desktop. The backend determines which desktop environment appears on the client side.
Installation on the Debian family is very simple:
sudo apt update
sudo apt install xrdpThe xrdp package automatically registers a service. Enable and verify:
sudo systemctl enable --now xrdp
sudo systemctl status xrdp
ss -tulpn | grep 3389The systemctl enable --now xrdp command starts the server now and at boot. ss -tulpn | grep 3389 confirms xrdp is listening on the standard RDP port.
For a stable session backend, xrdp often needs TigerVNC standalone as the Xvnc backend, or an Xorg session. Install the supporting components at the same time:
sudo apt install tigervnc-standalone-server tigervnc-commonxrdp's main configuration lives at /etc/xrdp/xrdp.ini. A few of the sections you'll change most often:
[Globals]
port=3389
crypt_level=high
[Xorg]
name=Xorg
lib=libxup.so
session_program=/usr/bin/startx
[Xvnc]
name=Xvnc
lib=libvnc.soport=3389 sets the listen port, crypt_level=high sets the encryption level, and each session (Xorg or Xvnc) is its own block. After changing the file, restart the service:
sudo systemctl restart xrdpThe backend choice determines how the desktop is created:
RDP client -> xrdp (3389) -> Xorg / Xvnc -> desktop environmentFor a complete desktop, make sure the desktop environment session package is installed (for example xfce4 or gnome-session), because xrdp only provides the connection layer, not the desktop.
Now test from the most common side — Windows. Open the Remote Desktop Connection app (mstsc) and fill in the server address:
Computer: 192.168.1.20:3389
User name: armanClick Connect, then enter the Linux user credentials. If successful, the Linux desktop appears in the Windows window. From Linux, the same connection can be opened with Remmina or xfreerdp:
xfreerdp /v:192.168.1.20:3389 /u:armanThe xfreerdp /v:192.168.1.20:3389 /u:arman command connects to xrdp from a Linux client. RDP is encrypted by default, so unlike VNC it doesn't require tunneling — although combining it with SSH is still recommended for extra security (episode 14).
Info
If logging in with a GNOME desktop fails or shows a blank screen, try an Xorg session first by selecting the "Xorg" session in the xrdp login dialog, or install the lighter Xfce session. Many xrdp login problems come from an unavailable desktop session.
Besides xrdp, GNOME provides GNOME Remote Desktop — a built-in GNOME service that natively supports the RDP protocol, especially on Wayland sessions. Unlike xrdp, which is standalone and creates its own session, GNOME Remote Desktop shares the running session. Configuration is done via grdctl, and episode 18 will cover it thoroughly.
The two approaches each have their strengths:
| Aspect | xrdp | GNOME Remote Desktop |
|---|---|---|
| Session | Creates a new session (Xorg/Xvnc) | Shares the running GNOME session |
| Wayland | Not native | Native Wayland |
| Multi-user | Supports separate sessions | Single-user |
| Configuration | xrdp.ini file | grdctl / GUI |
| Dependencies | Standalone | Requires GNOME |
Rule of thumb: use xrdp if you need a standalone RDP server that can serve many users or run on a non-GNOME desktop. Use GNOME Remote Desktop if you're on GNOME/Wayland and only need to access the running session.
Episode 15 introduced RDP on Linux: installing and enabling xrdp, understanding the xrdp.ini file with its Xorg and Xvnc backends, connecting from Windows mstsc and Linux xfreerdp, and comparing xrdp with the Wayland-native GNOME Remote Desktop.
Key takeaways:
xrdp.ini sets the port, encryption, and session definitions.mstsc can connect without installing any additional app.In the next episode, episode 16, we bring together all the security lessons: hardening remote access — strong passwords and non-default ports, SSH-only exposure, fail2ban for VNC/RDP ports, TCP wrappers, and log monitoring and access auditing. See you there!