Tutorial

So installieren und konfigurieren Sie VNC unter Ubuntu 20.04 [Quickstart]

Published on June 12, 2020
Default avatar

By Mark Drake

Manager, Developer Education

Deutsch
So installieren und konfigurieren Sie VNC unter Ubuntu 20.04 [Quickstart]

Einführung

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.

Voraussetzungen

Um dieses Tutorial zu absolvieren, benötigen Sie:

  • Einen Ubuntu 20.04-Server mit einem administrativen non-root user und eine mit UFW konfigurierte Firewall. Um dies einzurichten, folgen Sie unserem Leitfaden für die Ersteinrichtung des Servers für Ubuntu 18.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

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

  1. sudo apt update

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

  1. sudo apt install xfce4 xfce4-goodies

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

  1. 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:

  1. vncpasswd

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

Output
You 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.

Schritt 2 — Konfiguration des VNC-Servers

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:

  1. nano ~/.vnc/xstartup

Fügen Sie der neuen Datei folgende Zeilen hinzu:

~/.vnc/xstartup
#!/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:

  1. chmod +x ~/.vnc/xstartup

Und starten Sie den VNC-Server mit dem Befehl vncserver:

  1. 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:

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

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.

Schritt 3 — Sichere Verbindung mit dem VNC-Desktop

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

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:

Klicken Sie mit der rechten Maustaste auf die oberen 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 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:

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

Schritt 4 — VCN als Systemdienst ausführen

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:

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

/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

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

  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

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:

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

Zusammenfassung

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.

Learn more about us


About the authors
Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean

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