Wie man einen sicheren VNC-Server auf Debian 10 einrichtet
Virtual Network Computing (VNC) ist ein Verbindungssystem, das es dir ermöglicht, mit deiner Tastatur und Maus auf eine grafische Desktop-Umgebung auf einem entfernten Server zuzugreifen. Es hilft Benutzern, die mit der Kommandozeile noch nicht vertraut sind, Dateien, Software und Einstellungen auf einem entfernten Server zu verwalten.
In diesem Leitfaden richtest du einen VNC-Server auf einem Debian 10 Server ein und verbindest dich sicher über einen SSH-Tunnel. Du wirst TightVNC verwenden, ein schnelles und leichtgewichtiges Fernsteuerungspaket. Diese Wahl stellt sicher, dass die VNC-Verbindung auch bei langsameren Internetverbindungen stabil und flüssig bleibt.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigst du:
- Einen Debian 10 Server, der eingerichtet ist, einschließlich eines Nicht-Root-Benutzers mit sudo-Rechten und einer Firewall.
- Einen lokalen Computer mit einem installierten VNC-Client, der VNC-Verbindungen über SSH-Tunnel unterstützt.
- Unter Windows kannst du TightVNC, RealVNC oder UltraVNC verwenden.
- Unter macOS kannst du das integrierte Screen Sharing Programm nutzen oder eine plattformübergreifende App wie RealVNC verwenden.
- Unter Linux kannst du aus vielen Optionen wählen, darunter vinagre, krdc, RealVNC oder TightVNC.
Wenn du alles eingerichtet hast, kannst du mit dem ersten Schritt fortfahren.
Schritt 1 — Desktop-Umgebung und VNC-Server installieren
Standardmäßig enthält ein Debian 10 Server keine grafische Desktop-Umgebung oder einen VNC-Server. Beginne daher mit der Installation dieser Komponenten. Installiere speziell die Pakete für die aktuelle Xfce-Desktop-Umgebung und das TightVNC-Paket aus dem offiziellen Debian-Repository.
Aktualisiere zunächst die Paketliste auf deinem Server:
sudo apt update
Installiere anschließend die Xfce-Desktop-Umgebung auf deinem Server:
sudo apt install xfce4 xfce4-goodies
Während der Installation wirst du aufgefordert, dein Tastaturlayout aus einer Liste auszuwählen. Wähle das passende Layout für deine Sprache aus und bestätige mit Enter. Die Installation wird fortgesetzt.
Nach Abschluss der Installation installiere den TightVNC-Server:
sudo apt install tightvncserver
Um die erste Konfiguration des VNC-Servers nach der Installation abzuschließen, verwende den Befehl vncserver
, um ein sicheres Passwort festzulegen und die anfänglichen Konfigurationsdateien zu erstellen:
vncserver
Danach wirst du aufgefordert, ein Passwort einzugeben und zu bestätigen, um auf deinen Server zugreifen zu können:
Ausgabe:\n\nDu benötigst ein Passwort, um auf deinen Desktop zuzugreifen.\n\nPasswort:\nBestätigen:\n
Das Passwort muss zwischen sechs und acht Zeichen lang sein. Passwörter mit mehr als acht Zeichen werden automatisch gekürzt.
Nach der Bestätigung des Passworts kannst du optional ein reines Ansichtspasswort festlegen. Benutzer, die sich mit diesem Passwort anmelden, können die VNC-Sitzung nur ansehen, aber nicht steuern. Dies ist hilfreich, wenn du anderen etwas präsentieren möchtest, aber nicht zwingend erforderlich.
Im Anschluss werden die notwendigen Standard-Konfigurationsdateien und Verbindungsinformationen für den Server erstellt:
Ausgabe:\n\nMöchtest du ein reines Ansichtspasswort eingeben (j/n)? n\nxauth: Datei /home/sammy/.Xauthority existiert nicht\n\nNeuer 'X'-Desktop ist your_hostname:1\n\nErstelle Standard-Startskript /home/sammy/.vnc/xstartup\nStarte Anwendungen aus /home/sammy/.vnc/xstartup\nLogdatei ist /home/sammy/.vnc/your_hostname:1.log
Als Nächstes konfigurierst du den VNC-Server, um Xfce zu starten und den grafischen Zugriff auf den Server zu ermöglichen.
Schritt 3 — Sichere Verbindung zum VNC-Desktop herstellen
VNC selbst verwendet keine sicheren Protokolle für die Verbindung. Um eine sichere Verbindung herzustellen, wirst du einen SSH-Tunnel nutzen, um dich mit deinem Server zu verbinden. Anschließend teilst du deinem VNC-Client mit, diesen Tunnel zu verwenden, anstatt eine direkte Verbindung herzustellen.
Erstelle auf deinem lokalen Computer eine SSH-Verbindung, die sicher an den lokalen Host für VNC weiterleitet. Dies kannst du im Terminal unter Linux oder macOS mit folgendem Befehl tun. Ersetze sammy
und your_server_ip
durch deinen Benutzernamen und die IP-Adresse deines Servers:
ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
Erklärung der SSH-Befehl-Optionen:
-L
: Gibt die Port-Weiterleitung an. Hier wird Port 5901 der Remote-Verbindung auf Port 5901 deines lokalen Computers gebunden.-C
: Aktiviert die Komprimierung, um Ressourcen zu schonen und die Verbindung zu beschleunigen.-N
: Gibt an, dass kein Remote-Befehl ausgeführt werden soll.-l
: Gibt den Benutzernamen für die Remote-Anmeldung an.
Wenn du PuTTY unter Windows verwendest, kannst du einen SSH-Tunnel einrichten, indem du mit der rechten Maustaste auf die obere Leiste des Terminalfensters klickst und die Option Change Settings… auswählst.
Im linken Menü des PuTTY-Konfigurationsfensters findest du den Bereich Connection. Erweitere den SSH-Zweig und klicke auf Tunnels. Gib unter Source Port 5901
und unter Destination localhost:5901
ein.
Klicke anschließend auf Add und dann auf Apply, um den Tunnel zu aktivieren.
Sobald der Tunnel läuft, starte deinen VNC-Client und verbinde dich mit localhost:5901
. Du wirst aufgefordert, das Passwort einzugeben, das du in Schritt 1 festgelegt hast.
Nach der Verbindung erscheint die standardmäßige Xfce-Desktop-Umgebung folgendermaßen:
Klicke auf Use default config, um die Desktop-Umgebung zu konfigurieren.
Du kannst Dateien in deinem Home-Verzeichnis entweder über den Dateimanager oder über die Kommandozeile verwalten.
Um den SSH-Tunnel zu beenden, drücke CTRL + C
in deinem Terminal. Dadurch wird die VNC-Sitzung getrennt.
Im nächsten Schritt wirst du den VNC-Server als Dienst einrichten.
Schritt 4 — VNC als Systemdienst ausführen
Als Nächstes richtest du den VNC-Server als systemd-Dienst ein. Dadurch kannst du den Server wie jeden anderen Dienst starten, stoppen und neu starten. Außerdem wird der VNC-Server automatisch gestartet, wenn dein Server neu gestartet wird.
Erstelle zunächst eine neue Unit-Datei namens /etc/systemd/system/vncserver@.service
mit deinem bevorzugten Texteditor:
sudo nano /etc/systemd/system/vncserver@.service
Das Symbol @
am Ende des Dateinamens erlaubt es dir, beim Start des Dienstes einen Parameter zu übergeben. In diesem Fall bestimmst du damit die VNC-Display-Nummer.
Füge der Datei die folgenden Zeilen hinzu. Ändere User
, Group
, WorkingDirectory
und den Benutzernamen bei PIDFile
entsprechend deinem Benutzernamen:
[Unit]\nDescription=Starte TightVNC-Server beim Systemstart\nAfter=syslog.target network.target\n\n[Service]\nType=forking\nUser=sammy\nGroup=sammy\nWorkingDirectory=/home/sammy\n\nPIDFile=/home/sammy/.vnc/%H:%i.pid\nExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1\nExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i\nExecStop=/usr/bin/vncserver -kill :%i\n\n[Install]\nWantedBy=multi-user.target
Erklärung der Konfigurationsoptionen:
ExecStartPre
: Beendet eine laufende VNC-Instanz, bevor sie neu gestartet wird.ExecStart
: Startet den VNC-Server mit einer Farbtiefe von 24 Bit und einer Auflösung von 1280×800.ExecStop
: Stoppt die VNC-Instanz bei Bedarf.
Speichere und schließe die Datei.
Aktualisiere nun systemd, damit der neue Dienst erkannt wird:
sudo systemctl daemon-reload
Aktiviere den VNC-Dienst, damit er beim Systemstart automatisch ausgeführt wird:
sudo systemctl enable vncserver@1.service
Die 1
hinter dem @
bestimmt, dass der Dienst auf Display-Port :1
läuft.
Beende nun die aktuelle VNC-Instanz, falls sie noch läuft:
vncserver -kill :1
Starte den neuen VNC-Dienst:
sudo systemctl start vncserver@1
Überprüfe den Status des Dienstes, um sicherzustellen, dass er läuft:
sudo systemctl status vncserver@1
Ausgabe:
● vncserver@1.service - Starte TightVNC-Server beim Systemstart\nGeladen: geladen (/etc/systemd/system/vncserver@.service; aktiviert)\nAktiv: aktiv (laufend) seit Fr 2022-08-19 16:21:36 UTC; 5s ago\nProzess: 24469 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1\nProzess: 24474 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1\nHaupt-PID: 24482 (Xtightvnc)
Dein VNC-Server wird jetzt bei jedem Neustart des Systems automatisch gestartet.
Um die Verbindung wiederherzustellen, starte den SSH-Tunnel erneut:
ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
Stelle dann über deinen VNC-Client eine Verbindung zu localhost:5901
her.
Fazit
Du hast nun erfolgreich einen sicheren VNC-Server auf deinem Debian 10 Server eingerichtet. Jetzt kannst du deine Dateien, Software und Einstellungen bequem über eine benutzerfreundliche grafische Oberfläche verwalten. Außerdem kannst du grafische Anwendungen wie Webbrowser aus der Ferne nutzen.
Durch die Konfiguration des VNC-Servers als systemd-Dienst wird sichergestellt, dass der Server bei jedem Neustart automatisch gestartet wird. Die Nutzung eines SSH-Tunnels bietet zudem eine sichere Verbindung.
Für weitere Anpassungen kannst du die Bildschirmauflösung des VNC-Servers ändern oder verschiedene Desktop-Umgebungen ausprobieren, um deine Arbeitsweise besser zu unterstützen. Denke immer daran, deinen Server aktuell zu halten und bewährte Sicherheitspraktiken zu befolgen, um dein System zu schützen.
Viel Spaß bei der Verwaltung deines Servers mit einer grafischen Benutzeroberfläche!