Manager, Developer Education
Virtual Network Computing oder VNC ist ein Verbindungssystem, das es Ihnen ermöglicht, die Tastatur und die Maus zur Interaktion mit einer grafischen Desktop-Umgebung auf einem entfernten Server zu verwenden. Es vereinfacht die Verwaltung von Dateien, Software und Einstellungen auf einem entfernten Server für Benutzer, die mit der Befehlszeile noch nicht so versiert sind.
In dieser Kurzanleitung erfahren Sie, wie Sie einen VNC-Server mit TightVNC auf einem Ubuntu 20.04-Server einrichten und ihn sicher über einen SSH-Tunnel verbinden. Anschließend verwenden Sie ein VNC-Clientprogramm auf Ihrem lokalen Computer, um mit Ihrem Server über eine grafische Desktop-Umgebung zu interagieren.
Um dieses Tutorial zu absolvieren, benötigen Sie:
Nachdem Ihr Server mit SSH verbunden ist, aktualisieren Sie Ihre Paketliste:
- sudo apt update
Installieren Sie dann Xfce zusammen mit dem xfce4-goodies
-Paket, das einige Verbesserungen für die Desktop-Umgebung enthält:
- sudo apt install xfce4 xfce4-goodies
Wenn diese Installation abgeschlossen ist, installieren Sie den TightVNC Server:
- sudo apt install tightvncserver
Führen Sie als Nächstes den Befehl vncpasswd
aus, um ein Zugangspasswort für VNC festzulegen, und erstellen Sie die Dateien für die Anfangskonfiguration:
- vncpasswd
Sie werden dazu aufgefordert, ein Passwort einzugeben und zu verifizieren, um remote auf Ihren Rechner zuzugreifen:
OutputYou will require a password to access your desktops.
Password:
Verify:
Das Passwort muss aus sechs bis acht Zeichen bestehen; Passwörter mit mehr als 8 Zeichen werden automatisch gekürzt. Wenn Sie das Passwort überprüfen, haben Sie die Option, ein Passwort für den reinen Lesezugriff zu erstellen. Dies ist jedoch nicht zwingend erforderlich.
Wenn Sie Ihr Passwort ändern möchten oder ein Passwort für den reinen Lesezugriff hinzufügen möchten, führen Sie den Befehl vncpasswd
erneut aus.
Die Befehle, die der VNC-Server beim Starten ausführt, befinden sich in einer Konfigurationsdatei namens xstartup
im Ordner .vnc
unter Ihrem Stammverzeichnis. In diesem Schritt erstellen wir ein benutzerdefiniertes xstartup
-Skript, das den VNC-Server anweist, sich mit dem Xfce-Desktop zu verbinden.
Erstellen Sie eine neue xstartup
-Datei und öffnen Sie sie in einem Texteditor wie nano
:
- nano ~/.vnc/xstartup
Fügen Sie der neuen Datei folgende Zeilen hinzu:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Hinter dem sheband weist der erste Befehl in der Datei xrdb $HOME/.Xresources
das GUI Framework des VNC an, die .Xresources
-Datei des Serverbenutzers zu lesen. Der zweite Befehl weist den Server an, Xfce zu starten.
Speichern und schließen Sie die Datei nach dem Hinzufügen dieser Zeilen. Wenn Sie nano
verwendet haben, drücken Sie STRG+X
, Y
, dann die EINGABETASTE
.
Machen Sie die Datei anschließend ausführbar:
- chmod +x ~/.vnc/xstartup
Und starten Sie den VNC-Server mit dem Befehl vncserver
:
- vncserver -localhost
Dieser Befehl beinhaltet die Option -localhost
, die den VNC-Server an die Loopback-Schnittstelle Ihres Servers bindet. Dadurch kann VNC nur Verbindungen zulassen, die von dem Server stammen, auf dem es installiert ist.
Sie sehen eine Ausgabe, die dieser ähnelt:
OutputNew 'X' desktop is your_hostname:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log
Hier können Sie sehen, dass der Befehl eine standardmäßige Serverinstanz auf Port 5901
startet. Dieser Port wird als Anzeige-Port bezeichnet und wird vom VCN :1
genannt.
Um sich sicher mit Ihrem Server zu verbinden, richten Sie einen SSH-Tunnel ein und weisen Ihren VNC-Client an, diesen Tunnel zu verwenden, anstatt eine direkte Verbindung herzustellen.
Erstellen Sie auf Ihrem lokalen Computer eine SSH-Verbindung, die sicher an die localhost
-Verbindung für VNC weiterleitet. Sie können dies mit folgendem ssh
-Befehl über den Terminal auf Linux oder macOS durchführen:
- ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
Der lokale Port kann jeder Port sein, der von einem anderen Programm oder Prozess nicht bereits blockiert wurde. Wir verwenden in diesem Beispiel jedoch 59000
. Stellen Sie zudem sicher, sammy
in Ihren Ubuntu-Benutzernamen und your_server_ip
der IP-Adresse Ihres Servers entsprechend zu ändern.
Wenn Sie PuTTY verwenden, um sich mit Ihrem Server zu verbinden, können Sie einen SSH-Tunnel erstellen, indem Sie mit der rechten Maustaste auf die obere Leiste des Terminalfensters und anschließend auf die Option Change Setting… (Einstellungen ändern) klicken:
Suchen Sie den Verbindungszweig im Menübaum auf der linken Seite des Fensters PuTTY Reconfigure (PuTTY neu konfigurieren). Erweitern Sie den SSH-Zweig und klicken Sie auf Tunnels. Geben Sie auf dem Bildschirm Options controlling SSH port forwarding (Optionen für die Steuerung der SSH-Portweiterleitung) 59000
als Quell-Port und localhost:5901
als Destination an (wie in diesem Fall):
Klicken Sie anschließend auf die Schaltfläche Add (Hinzufügen) und danach auf die Schaltfläche Apply (Anwenden), um den Tunnel zu implementieren.
Sobald der Tunnel läuft, verwenden Sie einen VCN Client, um sich mit localhost:59000
zu verbinden. Sie werden aufgefordert, sich mit dem in Schritt 1 eingestellten Passwort zu authentifizieren.
Sobald die Verbindung steht, sehen Sie den Xfce Standard-Desktop. Sie sollte ungefähr wie folgt aussehen:
Sie können mit dem Dateimanager auf Dateien in Ihrem Stammverzeichnis zugreifen oder von der Befehlszeile aus, wie nachstehend zu sehen ist:
Drücken Sie STRG+C
auf Ihrem lokalen Terminal, um den SSH-Tunnel zu stoppen und zu Ihrer Aufforderung zurückzukehren. Damit wird auch Ihre VNC Sitzung unterbrochen.
Dadurch, dass der VNC-Server so eingerichtet wurde, dass er als systemd-Dienst ausgeführt wird, können Sie die systemd-Verwaltungsbefehle Start, Stop und Restart the server (Starten, Anhalten und Neustarten des Servers) nutzen. Zudem können Sie ihn so einstellen, dass er immer dann startet, wenn der Server hochgefahren wird.
Erstellen Sie zunächst für die systemd-Einheit eine neue Datei namens /etc/system/vncserver@.service
:
- sudo nano /etc/systemd/system/vncserver@.service
Das @
-Symbol am Ende des Namens gestattet uns, ein Argument aufzunehmen, das Sie in der Dienstkonfiguration verwenden können. Sie verwenden dies, um den VCN-Anzeige-Port anzugeben, den Sie bei der Dienstverwaltung einsetzen möchten.
Fügen Sie der Datei folgende Zeilen hinzu und stellen Sie sicher, dass der Wert für User, Group und WorkingDirectory geändert wird und der Benutzername im Wert von PIDFILE Ihrem Benutzernamen entspricht:
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy
PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Speichern und schließen Sie die Datei.
Machen Sie als Nächstes das System auf die neue Unit-Datei aufmerksam:
- sudo systemctl daemon-reload
Aktivieren Sie die Unit-Datei:
- sudo systemctl enable vncserver@1.service
Die 1
nach dem @
-Zeichen gibt an, über welcher Anzeigenummer der Dienst angezeigt werden soll; in diesem Fall ist der Standard :1
, wie wir bereits in Schritt 2 besprochen haben.
Stoppen Sie die aktuelle Instanz des VNC-Servers, wenn er noch läuft:
- vncserver -kill :1
Starten Sie ihn dann wie jeden anderen systemd-Dienst:
- sudo systemctl start vncserver@1
Sie können verifizieren, dass er mit diesem Befehl gestartet wurde:
- sudo systemctl status vncserver@1
In unserem Tutorial How To Use Systemctl to Manage Systemd Services and Units (So nutzen Sie Systemctl für die Verwaltung von Systemd-Diensten und -Units) finden Sie für weitere Informationen zu systemctl
.
Um Ihren SSH-Tunnel erneut zu verbinden, starten Sie ihn erneut:
- ssh -L 59000:127.0.0.1:5901 -C -N -l sammy your_server_ip
Stellen Sie dann mit Ihrer VCN-Client-Software eine neue Verbindung zum localhost:59000 her,
um sich mit Ihrem Server zu verbinden.
Jetzt läuft ein sicherer VCN Server auf Ihrem Ubuntu 20.04 Server. Jetzt können Sie Ihre Dateien, Software und Einstellungen mit einer benutzerfreundlichen grafischen Oberfläche verwalten und grafische Software wie Web-Browser per Fernzugriff ausführen.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!