Remote-Desktopverbindung Xrdp unter Debian

Linux Windows

Wenn du auf die grafische Oberfläche eines Debian-Server zugreifen möchtest, gibt es ja mehrere Möglichkeiten. Du kannst VNC nutzen, du kannst X11-Forwarding unter SSH nutzen (die von mir bevorzugte Variante) und dann kennst du bestimmt noch die Remote-Desktopverbindung unter Windows. Diese kannst du auch nutzen, um mit Windows-Bordmitteln (der RDP-Client ist da schon vorinstalliert) auf ein Linux-System zuzugreifen. Wie das geht, werde ich dir im folgenden beschreiben.

In meiner Laborumgebung für diesen Blogbeitrag habe ich 192.168.178.2/24 als IP-Adresse für den Debian-Server gewählt und greife innerhalb des LAN auf diesen zu.

Doch zunächst musst du auf deinem Debian-System die Voraussetzungen schaffen, um überhaupt eine grafische Desktop-Umgebung nutzen zu können, sofern du nicht bereits eine installiert hast. Ich empfehle dir an dieser Stelle Xfce, das ist eine zu KDE oder GNOME vergleichsweise schnelle, stabile und leichtgewichtige Desktop-Umgebung. Die Installation erledigst du recht fix mit folgenden Kommandos.

$ sudo apt update
$ sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Als nächstes installierst du Xrdp, prüfst ob der Dienst fehlerfrei läuft.

$ sudo apt install xrdp 
$ sudo systemctl status xrdp
 xrdp.service - xrdp daemon
   Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2021-06-29 09:08:27 CEST; 1s ago
     Docs: man:xrdp(8)
           man:xrdp.ini(5)
  Process: 8824 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
  Process: 8832 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 8833 (xrdp)
    Tasks: 1 (limit: 4017)
   Memory: 1.7M
   CGroup: /system.slice/xrdp.service
           └─8833 /usr/sbin/xrdp

Jun 29 09:08:26 debian systemd[1]: Starting xrdp daemon...
Jun 29 09:08:26 debian xrdp[8832]: (8832)(139969624356672)[DEBUG] Testing if xrdp can listen on 0.0.0.0 port 3389.
Jun 29 09:08:26 debian xrdp[8832]: (8832)(139969624356672)[DEBUG] Closed socket 7 (AF_INET6 :: port 3389)
Jun 29 09:08:26 debian systemd[1]: xrdp.service: Can't open PID file /run/xrdp/xrdp.pid (yet?) after start: No such file or directory
Jun 29 09:08:27 debian systemd[1]: Started xrdp daemon.
Jun 29 09:08:28 debian xrdp[8833]: (8833)(139969624356672)[INFO ] starting xrdp with pid 8833
Jun 29 09:08:28 debian xrdp[8833]: (8833)(139969624356672)[INFO ] listening to port 3389 on 0.0.0.0

Wie du bereits siehst, bindet sich der Dienst per Default an den Port 3389 und hört auf allen Schnittstellen. Klingt jetzt nicht so prall, oder? Funktioniert zwar, aber sicher geht anders.

Also solltest du als nächstes Xdrp für Nutzung von Zertifikaten vorbereiten. Xrdp nutzt standardmäßig die Schlüssel-Datei /etc/ssl/private/ssl-cert-snakeoil.key, welche jedoch nur für User der Gruppe „ssl-cert“ lesbar ist. Deshalb musst du den User xrdp dieser Gruppe hinzufügen.

$ sudo adduser xrdp ssl-cert
$ sudo systemctl restart xrdp

Grundsätzlich kannst du jetzt bereits mit der Windows Remote-Desktop-Verbindung auf die grafische Oberfläche des Debian-Servers zugreifen, probiere das ruhig einmal aus, in dem du unter Windows den RDP-Client startest, die IP-Adresse des Debian-Server eintippst und auf Verbinden klickst. Du wirst als nächstes gefragt, ob du dem Zertifikat vertraust und dann kommt auch schon die Anmeldemaske für den xdrp-Dienst

Nach dem Login solltest du dann folgendes Bild sehen – Fertig.

Fertig? Nee, warte noch kurz. Denke darüber nach, das der Xrdp-Dienst auf allen Schnittstellen lauscht und jegliche Anfragen auf 3389 annimmt, das kannst du nicht wirklich wollen. Also passe die von dir genutzte Firewall an deine Bedürfnisse an! Oder installiere einen VPN-Zugang zu deinem Debian-Server. Du kannst auch einen SSH-Tunnel zu deinem Debian-Server aufbauen und den Port 3389 hindurch tunneln. Wie das grundlegend konfiguriert werden muss, habe ich in diesem Beitrag beschrieben. Wie auch immer – sichere dein System ab!

Scharzer Bildschirm und Verbindunsgreset?

Solltest du nach dem Login nur kurz einen schwarzen Bildschirm sehen und die Verbindung trennt sich sofort wieder, dann bearbeite die letzten Zeilen der Datei /etc/xrdp/startvm.sh (die konfiguriert deine XWindow-Umgebung für Xdrp). Kommentiere die letzten beiden Zeilen (test und exec) aus und füge startxfce4 als neue Zeile hinzu. Anschließend speichere die Datei und starte den Xdrp-Dienst neu.

$ sudo nano /etc/xrdp/startwm.sh
...
# test -x /etc/X11/Xsession && exec /etc/X11/Xsession
# exec /bin/sh /etc/X11/Xsession
startxfce4

$ sudo systemctl restart xrdp

Das Problem scheint aufzutreten, wenn du bereits eine andere Desktop-Umgebung als Xfce installiert hast und sich dann die unterschiedlichen Versionen „in die Haare kriegen“

7 thoughts on “Remote-Desktopverbindung Xrdp unter Debian

  1. Bester Guide! Habe gerade schonmal mit dem Versuch VNC zu installieren, mein Linux (debian 12) zerschossen (für den Laien). Jetzt nochmal alles neu aufgespielt und diesen Guide hier probiert!

    Läuft super! Danke 🙂

  2. Hallo Lars,
    vielen Dank für Deinen Blog. Ich bin erst vor ein paar Tagen darauf gestoßen und habe
    eine Reihe Deiner Beisträge gelesen, auch wenn ich zugegebenermaßen lange nicht alles verstehe 😉
    Aber Vieles regt an, um mich mehr und detaillierter damit zu befassen! kratze ich aber an der Oberfläche.
    Viele Grüße
    Ingo

  3. Hi Lars, besten Dank für deine Anleitung.
    Habe alles so gemacht wie beschrieben, ich bekomme aber keine Verbindung vom WindowsClient (win11) zum LinuxClient (MX Linux) per RDP.
    „Der Remotedesktop kann aus folgenden Gründen keine Verbindung…blablabla“
    Ich habe mir die Ports an der Windows Büchse angeschaut. Der 3389 wird während des Verbindungsaufbaus per RDP genutzt. In der FW habe ich ein PortForwarding from „Any“ zur Linuxbüchse mit dem Port 3389 eingerichtet. Im Terminal der Linuxbüchse erhalte ich folgende Infos:
    lsof -i:3389
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    xrdp 69055 xrdp 11u IPv6 123088 0t0 TCP *:ms-wbt-server (LISTEN)
    Da ich absoluter Neuling im Linux bin, bin ich jetzt schon mit meinem Latein am Ende.
    Hast du ne Idee?
    gruß
    Christian

    1. Lauscht der wirklich nur per IPv6? Versuchst du dann auch den Zugriff per IPv6 oder nur IPv4.
      Wenn dein Auszug oben korrekt ist und du IPv4 nutzt, kann keine Verbindung zustande kommen.

  4. Hallo Lars, versucht mit deinem Leitfaden (und auch anderen) unter RaspPi 5 den XRDP mit einem NEUEN USER zum laufen zu bekommen…

    Ich vermute irgendwas passt an der Gruppenzuweisung noch nicht. Mit dem root verbindet man sich ja nicht, aber auf einem der ersten RaspPi5 Versuche habe ich den XRDP damit funktionsfähig bekommen. Jetzt habe ich einen Sudo-User, der zwar keine Fehlermeldung mehr wirft, aber nach dem Login bleibt der Schirm einfach grün (nicht schwarz). Gibt auch keinen Verbindungsabbruch.

    Genutzt wird Rasppian (Debian 12) wie es derzeit im Standard für RaspPi 5 verteilt wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert