Tutorial

So installieren und konfigurieren Sie VNC unter Ubuntu 20.04

Published on June 12, 2020
Deutsch
So installieren und konfigurieren Sie VNC unter Ubuntu 20.04

Einführung

Virtual Network Computing, auch VNC genannt, ist ein Verbindungssystem, das es Ihnen ermöglicht, mithilfe Ihrer Maus und Tastatur mit einer grafischen Desktop-Umgebung auf einem entfernten Server zu interagieren. 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.

Voraussetzungen

Um dieses Tutorial zu absolvieren, benötigen Sie:

  • Einen Ubuntu 20.04-Server mit einem administrativen Nicht-Root-Benutzer und eine mit UFW konfigurierte Firewall. Um dies einzurichten, folgen Sie unserem Leitfaden für die Ersteinrichtung des Servers für Ubuntu 20.04.
  • Einen lokalen Computer mit einem installierten VNC-Client. Der VNC-Client, den Sie verwenden, muss Verbindungen über SSH-Tunnel unterstützen:
    • In Windows können Sie TightVNC, RealVNC oder UltraVNC verwenden.
    • Auf MacOS können Sie das integrierte Screen Sharing-Programm verwenden oder eine plattformübergreifende App wie RealVNC.
    • Auf Linux können Sie aus zahlreichen Optionen auswählen, darunter Vinagre,krdc, RealVNC oder TightVNC.

Schritt 1 — Installation der Desktop-Umgebung und des VNC-Servers

Standardmäßig wird ein Ubuntu 20.04 Server nicht mit einer grafischen Desktop-Umgebung oder einem installierten VNC-Server geliefert. Daher beginnen Sie mit deren Installation.

Bei der Wahl des VNC-Servers und der Desktop-Umgebung haben Sie viele Optionen, aus denen Sie auswählen können. In diesem Tutorial installieren Sie Pakete für die aktuellste Xfce-Desktop-Umgebung und das TightVNC-Paket, das im offiziellen Ubuntu Repository verfügbar ist. Sowohl Xfce als auch TightVNC sind für ihre leichte und schnelle Ausführung bekannt. Dadurch wird sichergestellt, dass die VNC-Verbindung reibungslos funktioniert und auch bei langsameren Internetverbindungen stabil bleibt.

Sobald Ihr Server mit SSH verbunden ist, aktualisieren Sie Ihre Paketliste:

  1. sudo apt update

Installieren Sie nun Xfce zusammen mit dem xfce4-goodies-Paket, das einige Verbesserungen für die Desktop-Umgebung enthält:

  1. sudo apt install xfce4 xfce4-goodies

Während der Installation werden Sie möglicherweise dazu aufgefordert, einen standardmäßigen Display-Manager für Xfce auszuwählen. Ein Display-Manager ist ein Programm, mit dem Sie sich über eine grafische Oberfläche in einer Desktop-Umgebung einloggen und Vorgaben auswählen können. Sie verwenden Xfce nur, wenn Sie sich mit einem VNC-Client verbinden. In diesen Xfce-Sitzungen sind Sie bereits als Nicht-Root-Benutzer für Ubuntu angemeldet. Für die Zwecke dieses Tutorials ist Ihre Auswahl des Display-Managers nicht relevant. Wählen Sie entweder einen aus oder drücken Sie ENTER.

Wenn diese Installation abgeschlossen ist, installieren Sie den TightVNC Server:

  1. sudo apt install tightvncserver

Führen Sie als Nächstes den Befehl vncserver aus, um ein VNC-Zugangspasswort festzulegen, die anfänglichen Konfigurationsdateien zu erstellen und eine VNC-Serverinstanz zu starten:

  1. vncserver

Sie werden dazu aufgefordert, ein Passwort einzugeben und zu verifizieren, um ferngesteuert auf Ihren Rechner zuzugreifen:

Output
You will require a password to access your desktops. Password: Verify:

Das Passwort muss zwischen sechs und acht Zeichen lang sein. Passwörter mit mehr als 8 Zeichen werden automatisch verkürzt.

Sobald Sie das Passwort verifiziert haben, können Sie ein schreibgeschütztes Passwort einrichten. Benutzer, die sich mit dem schreibgeschützten Passwort anmelden, können die VNC-Instanz nicht mit der Maus oder Tastatur steuern. Das ist eine hilfreiche Option, wenn Sie mit Ihrem VNC-Server anderen etwas zeigen möchten, ist aber nicht erforderlich.

Der Prozess erstellt dann die notwendigen Standard-Konfigurationsdateien und Verbindungsinformationen für den Server. Zudem startet er eine Standard-Serverinstanz auf Port 5901. Dieser Port nennt sich Anzeige-Port und wird vom VNC als :1 bezeichnet. VNC kann mehrere Instanzen auf anderen Anzeige-Ports starten. :2 bezieht sich auf Port 5902, :3 auf 5903 und so weiter:

Output
Would you like to enter a view-only password (y/n)? n xauth: file /home/sammy/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Wenn Sie Ihr Passwort ändern oder ein schreibgeschütztes Passwort hinzufügen möchten, beachten Sie, dass Sie dies mit dem Befehl vncpasswd tun können:

  1. vncpasswd

Das ist der Moment, ab dem der VNC-Server installiert ist und läuft. Nun konfigurieren wir ihn, um Xfce zu starten und um uns Zugriff auf den Server über eine grafische Oberfläche zu erteilen.

Schritt 2 — Konfiguration des VNC-Servers

Der VNC-Server muss wissen, welche Befehle er beim Start ausführen soll. VNC muss vor allem wissen, mit welcher grafischen Desktop-Umgebung er sich verbinden soll.

Die Befehle, die der VNC-Server beim Starten ausführt, befinden sich in einer Konfigurationsdatei namens xstartup im Ordner .vnc unter Ihrem Stammverzeichnis. Das Start-Skript wurde erstellt, als Sie den vncserver im vorherigen Schritt ausgeführt haben, aber Sie erstellen Ihr eigenes, um den Xfce-Desktop zu starten.

Da Sie die Konfiguration des VNC-Servers ändern werden, müssen Sie zunächst die VNC-Server-Instanz stoppen, die auf Port 5901 ausgeführt wird. Dazu verwenden Sie den folgenden Befehl:

  1. vncserver -kill :1

Die Ausgabe sollte wie folgt aussehen, auch wenn Sie eine andere PID sehen werden:

Output
Killing Xtightvnc process ID 17648

Bevor Sie die Datei xstartup ändern, sollten Sie ein Backup der Originaldatei vornehmen:

  1. mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Erstellen Sie eine neue xstartup-Datei und öffnen Sie sie in einem Texteditor wie nano:

  1. nano ~/.vnc/xstartup

Fügen Sie der Datei anschließend folgende Zeilen hinzu:

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

Die erste Zeile ist ein shebang. In ausführbaren Klartext-Dateien auf *nix-Plattformen weist ein shebang das System an, an welchen Interpreter die Datei zur Ausführung weitergegeben wird. In diesem Fall übergeben Sie die Datei dem Bash-Interpreter. Dies erlaubt es, jede aufeinanderfolgende Zeile als Befehl der Reihe nach auszuführen.

Der erste Befehl in der Datei, xrdb $HOME/.Xresources weist das GUI Framework des VNC an, die .Xresources-Datei. . des Serverbenutzers zu lesen. Xresources ist der Ort, an dem ein Benutzer bestimmte Einstellungen des grafischen Desktops ändern kann, wie die Terminal-Farben, Cursor-Gestaltung und das Font-Rendering. Der zweite Befehl weist den Server an, Xfce zu starten. Immer, wenn Sie den VNC-Server starten oder neu starten, werden diese Befehle automatisch ausgeführt.

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 ENTER.

Um sicherzustellen, dass der VNC-Server diese neue Start-Datei ordnungsgemäß verwenden kann, müssen Sie sie ausführbar machen:

  1. chmod +x ~/.vnc/xstartup

Starten Sie den VNC-Server anschließend neu:

  1. vncserver -localhost

Achten Sie dieses Mal darauf, dass dieser Befehl die Option -localhost beinhaltet, 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.

Im nächsten Schritt richten Sie einen SSH-Tunnel zwischen Ihrem lokalen Rechner und Ihrem Server ein und gaukeln VNC damit im Grunde vor, dass die Verbindung von Ihrem lokalen Rechner von Ihrem Server stammt. Diese Strategie fügt eine zusätzliche Sicherheitsebene um VNC herum hinzu, da die einzigen Benutzer, die darauf zugreifen können, bereits SSH-Zugriff auf Ihren Server haben.

Sie sehen eine Ausgabe, die dieser ähnelt:

Output
New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Da die Konfiguration nun betriebsbereit ist, können Sie jetzt die Verbindung von Ihrem lokalen Rechner zum VNC-Server herstellen.

Schritt 3 — Eine sichere Verbindung mit dem VNC-Desktop

VNC selbst verwendet keine sicheren Protokolle beim Verbinden. 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:

  1. ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

Im Folgenden wird die Bedeutung dieses ssh-Befehls erklärt:

  • -L 59000:localhost:5901: Der -L-Schalter gibt an, dass der angegebene Port auf dem lokalen Computer (59000) an den angegebenen Host und den Port auf dem Zielserver weitergeleitet werden soll (localhost:5901, bedeutet Port 5901 auf dem Zielserver, definiert als your_server_ip). Beachten Sie, dass der von Ihnen angegebene lokale Port etwas willkürlich ist. Solange der Port nicht bereits in einen anderen Dienst eingebunden ist, können Sie ihn als Weiterleitungsport für Ihren Tunnel verwenden.
  • -C: Dieses Flag ermöglicht eine Komprimierung, mit der die Ressourcennutzung minimiert und die Prozesse beschleunigt werden können.
  • -N: Diese Option weist ssh an, dass Sie keine Remote-Befehle ausführen möchten. Diese Einstellung ist hilfreich, wenn Sie Ports lediglich weiterleiten möchten.
  • -l sammy your_server_ip: Mit dem -l-Schalter legen Sie den Benutzer fest, mit dem Sie sich anmelden wollen, sobald Sie sich mit dem Server verbinden. Stellen Sie sicher, dass Sie sammy und your_server_ip durch den Namen Ihres Nicht-root-Benutzers und der IP-Adresse Ihres Servers ersetzen.

Hinweis: Dieser Befehl richtet einen SSH-Tunnel ein, der Informationen von Port 5901 auf Ihrem VNC-Server an Port 59000 auf Ihrem lokalen Rechner über Port 22 auf jedem Rechner (den Standardport für SSH) weiterleitet. Wenn Sie dem Leitfaden für Ersteinrichtung eines Servers für Ubuntu 20.04 gefolgt sind, der als Voraussetzung gilt, haben Sie eine UFW-Regel hinzugefügt, die Verbindungen zu Ihrem Server über OpenSSH erlaubt.

Dies ist sicherer als einfach die Firewall Ihres Servers für Verbindungen zu Port 5901 zu öffnen. Denn dadurch würde jedermann über VNC auf Ihren Server zugreifen können. Durch das Verbinden eines SSH-Tunnels begrenzen Sie den VNC-Zugriff auf Computer, die bereits SSH-Zugriff auf den Server haben.

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:

Klicken Sie mit der rechten Maustaste auf die obere Leiste, um die Option Change Settings (Einstellungen ändern) einzublenden

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):

Beispiel PuTTY SSH-Tunnelkonfiguration

Klicken Sie anschließend auf die Schaltfläche Add (Hinzufügen) und dann auf die Schaltfläche Apply (Anwenden), um den Tunnel zu implementieren.

Sobald der Tunnel läuft, verwenden Sie einen VNC 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:

VNC-Verbindung zum Ubuntu 20.04-Server mit der Xfce-Desktop-Umgebung

Sie können mit dem Dateimanager auf Dateien in Ihrem Stammverzeichnis zugreifen oder von der Befehlszeile aus, wie nachstehend zu sehen ist:

File Manager über VNC-Verbindung zu Ubuntu 20.04

Drücken Sie CTRL+C auf Ihrem lokalen Terminal, um den SSH-Tunnel zu stoppen und zu Ihrer Aufforderung zurückzukehren. Damit wird auch Ihre VNC-Sitzung unterbrochen.

Jetzt können Sie Ihren VNC-Server so konfigurieren, dass er als systemd-Dienst ausgeführt wird.

Schritt 4 — VNC als Systemdienst ausführen

Da der VNC-Server für die Ausführung als systemd-Dienst eingerichtet wurde, können Sie ihn wie jeden anderen Dienst nach Bedarf starten, anhalten und neu starten. Sie können auch die Verwaltungsbefehle von systemd nutzen, um sicherzustellen, dass VNC beim Hochfahren Ihres Servers startet.

Erstellen Sie zunächst eine Unit-Datei namens /etc/systemd/system/vncserver@.service:

  1. 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 VNC-Anzeige-Port anzugeben, den Sie bei der Dienstverwaltung einsetzen möchten.

Fügen Sie der Datei folgende Zeilen hinzu. Vergewissern Sie sich, dass Sie den Wert von User, Group, WorkingDirectory und den Benutzernamen im Wert von PIDFILE ändern, damit er mit Ihrem Benutzernamen übereinstimmt:

/etc/systemd/system/vncserver@.service
[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

Der Befehl ExecStartPre stoppt VNC, wenn er bereits läuft. Der ExecStart Befehl startet VNC und stellt die Farbtiefe auf 24-Bit-Farbe mit einer Auflösung von 1280 x 800. Sie können diese Startoptionen auch je nach Wunsch ändern. Beachten Sie auch, dass der Befehl ExecStart wieder die Option -localhost beinhaltet.

Speichern und schließen Sie die Datei.

Machen Sie als Nächstes das System auf die neue Unit-Datei aufmerksam:

  1. sudo systemctl daemon-reload

Aktivieren Sie die Unit-Datei:

  1. sudo systemctl enable vncserver@1.service

Die 1 nach dem @-Zeichen gibt an, über welche 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:

  1. vncserver -kill :1

Starten Sie ihn dann wie jeden anderen systemd-Dienst:

  1. sudo systemctl start vncserver@1

Sie können verifizieren, dass er mit diesem Befehl gestartet wurde:

  1. sudo systemctl status vncserver@1

Falls er richtig gestartet wurde, sollte die Ausgabe wie folgt aussehen:

Output
● vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-07 17:23:50 UTC; 6s ago Process: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Main PID: 39795 (Xtightvnc) ...

Ihr VNC-Server ist jetzt betriebsbereit, sobald Ihr Server hochfährt, und Sie können ihn mit systemctl-Befehlen wie jeden anderen systemd-Dienst verwalten.

Es gibt jedoch keinen Unterschied auf der Client-Seite. Um Ihren SSH-Tunnel erneut zu verbinden, starten Sie ihn erneut:

  1. ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

Stellen Sie dann mit Ihrer VNC-Client-Software eine neue Verbindung zu localhost:59000 her, um sich mit Ihrem Server zu verbinden.

Zusammenfassung

Jetzt läuft ein sicherer VNC-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.

Learn more about us


About the authors
Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean


Default avatar
finid

author


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


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!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel