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“
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 🙂
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
Danke für das positive Feedback. Bei Fragen einfach melden, in der IT gibt es für jedes Problem eine Lösung. 😀
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
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.
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.
Sagt mir auf Anhieb leider auch nichts und müsste ich auch googlen. Ist denn in den Logfiles nichts zu finden?