Die erste Wahl für den Fernzugriff auf einen Linux-Server ist sicherlich SSH. Möchte man aber dabei eine komplette Desktop-Umgebung nutzen, dann eignet sich VNC (=Virtual Network Computing).
Da die VNC-Verbindung nicht wirklich sicher ist und nur mit einem schwachen Passwort abgesichert werden kann, sollte man SSH und VNC kombinieren.
In den Manuals kannst du die Passwortzusammensetzung nachlesen:
“Each password has to be longer than five characters (unless the -f command-line option was used, see its description below). Only the first eight characters are significant. If the primary password is too short, the program will abort.”
➡ https://www.tightvnc.com/vncpasswd.1.php
Eine Passwortlänge von 8 Zeichen ist eher suboptimal und sollte deshalb durch weitere Sicherheitsmechanismen wie SSH ergänzt werden, auch im eigenen Netzwerk.
Anstatt also direkt mit einem VNC-Client auf den Linux-Server zuzugreifen, wird zuerst eine SSH-Verbindung aufgebaut und VNC anschließend durch diese getunnelt.
Die SSH-Verbindung lässt sich dabei sehr gut mit einem Hardwartoken, wie dem YubiKey, absichern.
➡ https://strobelstefan.de/yubikey/
Linux-Server
Desktop-Umgebung xfce installieren
Es wird die Desktop-Uumgebung xfce4
auf dem Linux-Server installiert. xfce4
wird dann exklusiv für die VNC-Verbindung verwendet.
Wenn ein Monitor am Server angeschlossen wird, kann weiterhin die gewohnte Gnome-Umgebung verwendet werden.
(Bei dem Versuch Gnome per VNC zu nutzen, habe ich nur einen grauen Bildschirm und den Mauszeiger übertragen bekommen.)
Die neue Desktop-Umgebung lässt sich aus den Paketquellen installieren.
sudo apt install xfce4 xfce4-goodies
VNC-Server installieren
Als VNC-Server wird tightvnc
verwendet.
sudo apt install tightvncserver
Das Passwort für den Zugriff via VNC wird mit vncpasswd
gesetzt und auch geändert.
Gestartet wird der VNC-Server dann ganze einfach mit
vncserver
Eine VNC-Verbindung lässt sich nun schon herstellen. Aber die läuft noch nicht und xfce4
wird auch noch nicht verwendet und auch kein SSH-Tunnel.
VNC-Server konfigurieren
Es wird der VNC-Server für Display 1 beendet.
vncserver -kill :1
Die bestehende Konfiguration wird gesichert, falls vorhanden.
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
nano ~/.vnc/xstartup
Der Inhalt der Datei xstartup
ist der Absatz einzufügen, damit xfce4
für die VNC-Verbindung verwendet wird und nicht Gnome. (grauer Bildschirm!)
xrdb $HOME/.Xresources
startxfce4 &
Die Datei ausführbar zu machen. (x= execute)
chmod +x ~/.vnc/xstartup
Nun kann der VNC-Server auf dem Linux-Server gestartet werden.
tightvncserver -localhost
Durch den Zusatz -localhost
wird VNC ausschließlich auf den Linux-Server beschränkt und andere Verbindungen werde nicht zugelassen.
Versucht ein Client direkt eine VNC-Verbindung herzustellen, ist die nicht erlaubt.
Durch das Beschränken von VNC ausschließlich auf den Server und das Tunneln durch die SSH-Verbindung ist der direkte Aufruf im VNC-Client über eine ungeschützte Leitung nicht mehr notwendig:
192.168.2.13:1
Gib mir gerne einen Kaffee ☕ aus!
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.
bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj
sshd_conf anpassen
In der zentralen Datei zu Regelung der SSH-Verbindung ist ein Eintrag zu setzen, um das Port Forwarding zu erlauben.
Die Datei sshd_config
ist zu editieren.
sudo nano /etc/ssh/sshd_config
Am Ende der Datei ist die Zeile einzutragen.
GatewayPorts yes
AllowTcpForwarding yes
Danach ist der SSH-Dienst neu zu starten, um die Änderungen einzulesen.
sudo systemctl restart sshd
Client
SSH-Verbindung herstellen
Die SSH-Verbindung wird auf dem Client mit hergestellt:
ssh -L 5901:localhost:5901 benutzername@192.168.2.13
Mit der Option -L
wird die VNC-Verbindung localhost:5901
automatisch durch die SSH-Verbindung zum Linux-Server getunnelt.
Für eine ausführliche Beschreibung siehe man ssh
.
VNC-Verbindung
Nachdem die SSH-Verbindung zwischen Client und Server aufgebaut wurde, kann mit jedem VNC-Client die Verbindung zum Server hergestellt werden.
Dazu gibt man im Client einfach ein:
localhost:5901
Durch die verwendete Option ssh -L
werden Anfragen an localhost:5901
automatisch an den Linux-Server weitergeleitet.
Dort lauscht auf Port der VNC-Server, der wiederum die Verbindung nach Eingabe des VNC-Passworts erlaubt.

Nicht vergessen, auf dem Linux-Server den VNC-Server zu starten.
tightvncserver -localhost
Die Auflösung lässt sich beim Starten gleich individuell anpassen. Dazu wird einfach der Befehl um eine weitere Option erweitert.
tightvncserver -localhost -geometry 1600x1200
Ruft man die VNC-Sitzung auf dem Client auf, wird das Fenster automatisch auf die angegebenen Auflösung skaliert.

Photo by Hugues de BUYER-MIMEURE on Unsplash

ist absolut technik-begeistert und großer Fan von Linux und Open Source. Raspberry Pi Bastler der ersten Stunde und nach wie vor begeistert von dem kleinen Stück Hardware, auf dem er tolle Projekte umsetzt. Teilt hier seine Erfahrungen mit Nextcloud, Pi-hole, YubiKey, Synology und openmediavault und anderen spannenden IT-Themen. Nutzt Markdown und LaTeX zum Dokumentieren seiner Projekte und Gitea zum Versionieren. Sitzt vor einem 49“ Monitor, nutzt Windows und MacOS zum Arbeiten, Linux auf seinen Servern und virtuellen Maschinen und hört dabei Spotify und MP3s und Radio-Streams über seinen RadioPi.