Einführung
Virtual Network Computing oder VNC ist ein Verbindungssystem, das es Ihnen ermöglicht, Ihre Tastatur und Maus zu verwenden, um mit einer grafischen Desktop-Umgebung auf einem entfernten Server zu interagieren. Es erleichtert die Verwaltung von Dateien, Software und Einstellungen auf einem entfernten Server für Benutzer, die mit der Befehlszeile noch nicht vertraut sind.
In diesem Handbuch richten Sie einen VNC-Server mit TightVNC auf einem Ubuntu 22.04-Server ein und stellen eine sichere Verbindung über einen SSH-Tunnel her. Anschließend verwenden Sie ein VNC-Clientprogramm auf Ihrem lokalen Rechner, um mit Ihrem Server über eine grafische Desktop-Umgebung zu interagieren.
Voraussetzungen
Um dieses Tutorial abzuschließen, benötigen Sie:
- Einen Ubuntu 22.04-Server mit einem nicht-root-administrativen Benutzer und einer Firewall, die mit UFW konfiguriert ist. Um dies einzurichten, folgen Sie unserer Anleitung zur Einrichtung eines Servers für Ubuntu 22.04.
- A local computer with a VNC client installed. The VNC client you use must support connections over SSH tunnels:
Schritt 1 – Installation der Desktop-Umgebung und des VNC-Servers
Standardmäßig wird ein Ubuntu 22.04 Server nicht mit einer grafischen Desktop-Umgebung oder einem VNC-Server installiert, daher beginnen Sie mit der Installation dieser.
Sie haben viele Optionen, wenn es um die Auswahl des VNC-Servers und der Desktop-Umgebung geht. In diesem Tutorial werden Pakete für die neueste Xfce-Desktop-Umgebung und das TightVNC-Paket aus dem offiziellen Ubuntu-Repository installiert. Sowohl Xfce als auch TightVNC sind für ihre Leichtigkeit und Geschwindigkeit bekannt, was sicherstellt, dass die VNC-Verbindung auch bei langsameren Internetverbindungen reibungslos und stabil ist.
Nachdem Sie eine Verbindung zu Ihrem Server über SSH hergestellt haben, aktualisieren Sie Ihre Paketliste:
Installieren Sie nun Xfce zusammen mit dem xfce4-goodies
-Paket, das einige Verbesserungen für die Desktop-Umgebung enthält:
Während der Installation werden Sie möglicherweise aufgefordert, einen Standard-Display-Manager für Xfce auszuwählen. Ein Display-Manager ist ein Programm, das es Ihnen ermöglicht, eine Desktop-Umgebung über eine grafische Benutzeroberfläche auszuwählen und sich anzumelden. Sie werden Xfce nur verwenden, wenn Sie sich mit einem VNC-Client verbinden, und in diesen Xfce-Sitzungen sind Sie bereits als Ihr nicht-root Ubuntu-Benutzer angemeldet. Für diesen Tutorial ist Ihre Auswahl des Display-Managers also nicht relevant. Wählen Sie einfach einen aus und drücken Sie ENTER
.
Sobald die Installation abgeschlossen ist, installieren Sie den TightVNC-Server:
Als Nächstes führen Sie den Befehl vncserver
aus, um ein VNC-Zugangspasswort festzulegen, die initialen Konfigurationsdateien zu erstellen und eine VNC-Serverinstanz zu starten:
Sie werden aufgefordert, ein Passwort einzugeben und zu bestätigen, um auf Ihren Computer remote zuzugreifen:
OutputYou will require a password to access your desktops.
Password:
Verify:
Das Passwort muss zwischen sechs und acht Zeichen lang sein. Passwörter, die länger als 8 Zeichen sind, werden automatisch abgeschnitten.
Nachdem Sie das Passwort bestätigt haben, haben Sie die Möglichkeit, ein nur-Anzeigen-Passwort zu erstellen. Benutzer, die sich mit dem nur-Anzeigen-Passwort anmelden, können die VNC-Instanz nicht mit ihrer Maus oder Tastatur steuern. Dies ist eine hilfreiche Option, wenn Sie anderen Personen etwas über Ihren VNC-Server zeigen möchten, aber dies ist nicht erforderlich.
Der Prozess erstellt dann die erforderlichen Standardkonfigurationsdateien und Verbindungsinformationen für den Server. Zusätzlich startet er eine Standard-Serverinstanz auf Port 5901
. Dieser Port wird als Anzeigehafen bezeichnet und von VNC als :1
bezeichnet. VNC kann mehrere Instanzen auf anderen Anzeigehäfen starten, wobei :2
auf Port 5902
verweist, :3
auf 5903
verweist und so weiter:
OutputWould 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
Beachten Sie, dass Sie Ihr Passwort jederzeit ändern oder ein Ansichtspasswort hinzufügen können, dies mit dem Befehl vncpasswd
tun können:
Zu diesem Zeitpunkt ist der VNC-Server installiert und läuft. Jetzt werden Sie ihn konfigurieren, um Xfce zu starten und uns Zugriff auf den Server über eine grafische Benutzeroberfläche zu geben.
Schritt 2 — Konfigurieren des VNC-Servers
Der VNC-Server muss wissen, welche Befehle beim Start ausgeführt werden sollen. Speziell muss VNC wissen, welche grafische Desktop-Umgebung es sich verbinden soll.
Die Befehle, die der VNC-Server beim Start ausführt, befinden sich in einer Konfigurationsdatei namens xstartup
im .vnc
-Ordner unter Ihrem Home-Verzeichnis. Das Startskript wurde erstellt, als Sie den Befehl vncserver
im vorherigen Schritt ausgeführt haben, aber Sie werden Ihr eigenes erstellen, um den Xfce-Desktop zu starten.
Da Sie die Konfiguration des VNC-Servers ändern werden, stoppen Sie zuerst die laufende VNC-Serverinstanz auf Port 5901
mit dem folgenden Befehl:
Die Ausgabe sieht ähnlich aus, obwohl Sie eine andere PID sehen werden:
OutputKilling Xtightvnc process ID 17648
Bevor Sie die Datei xstartup
ändern, sichern Sie das Original:
Erstellen Sie nun eine neue xstartup
-Datei und öffnen Sie sie in einem Texteditor wie nano
:
Fügen Sie dann die folgenden Zeilen zur Datei hinzu:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Die erste Zeile ist ein Shebang. In ausführbaren Klartextdateien auf *nix-Plattformen gibt ein Shebang dem System an, welchen Interpreter es zur Ausführung dieser Datei verwenden soll. In diesem Fall geben Sie die Datei an den Bash-Interpreter weiter. Dadurch werden die nachfolgenden Zeilen nacheinander als Befehle ausgeführt.
Der erste Befehl in der Datei, xrdb $HOME/.Xresources
, fordert das GUI-Framework von VNC auf, die Datei .Xresources
des Benutzers des Servers zu lesen. .Xresources
ist der Ort, an dem ein Benutzer bestimmte Einstellungen des grafischen Desktops wie Terminalfarben, Cursor-Themes und Schriftrendering ändern kann. Der zweite Befehl fordert den Server auf, Xfce zu starten. Diese Befehle werden jedes Mal automatisch ausgeführt, wenn Sie den VNC-Server starten oder neu starten.
Speichern und schließen Sie die Datei, nachdem Sie diese Zeilen hinzugefügt haben. Wenn Sie nano
verwendet haben, tun Sie dies, indem Sie STRG + X
, Y
und dann EINGABE
drücken.
Um sicherzustellen, dass der VNC-Server diese neue Startdatei ordnungsgemäß verwenden kann, müssen Sie sie ausführbar machen:
Dann starten Sie den VNC-Server neu:
Beachten Sie, dass dieses Mal der Befehl die Option -localhost
enthält, die den VNC-Server an die Loopback-Schnittstelle Ihres Servers bindet. Dadurch werden nur Verbindungen zugelassen, die vom Server stammen, auf dem er installiert ist.
Im nächsten Schritt richten Sie einen SSH-Tunnel zwischen Ihrem lokalen Rechner und Ihrem Server ein, um VNC praktisch glauben zu machen, dass die Verbindung von Ihrem lokalen Rechner auf Ihrem Server entstanden ist. Diese Strategie erhöht die Sicherheit von VNC, da nur Benutzer, die bereits SSH-Zugriff auf Ihren Server haben, darauf zugreifen können.
Sie sehen eine Ausgabe ähnlich dieser:
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
Mit dieser Konfiguration sind Sie bereit, eine Verbindung zum VNC-Server von Ihrem lokalen Rechner herzustellen.
Schritt 3 – Sicheres Verbinden mit dem VNC-Desktop
VNC selbst verwendet keine sicheren Protokolle für die Verbindung. Um sicher eine Verbindung zu Ihrem Server herzustellen, richten Sie einen SSH-Tunnel ein und teilen Ihrem VNC-Client dann mit, dass er diese Verbindung verwenden soll, anstatt eine direkte Verbindung herzustellen.
Erstellen Sie eine SSH-Verbindung auf Ihrem lokalen Computer, die sicher zur localhost
-Verbindung für VNC weitergeleitet wird. Dies können Sie über das Terminal unter Linux oder macOS mit folgendem ssh
-Befehl tun:
Hier ist die Bedeutung der Optionen dieses ssh
-Befehls:
-L 59000:localhost:5901
: Der-L
-Schalter gibt an, dass der angegebene Port auf dem lokalen Computer (59000
) an den angegebenen Host und Port auf dem Zielserver weitergeleitet wird (localhost:5901
, was Port5901
auf dem Zielserver bedeutet, definiert alsdein_server_ip
). Beachten Sie, dass der lokale Port, den Sie angeben, etwas willkürlich ist; solange der Port nicht bereits an einen anderen Dienst gebunden ist, können Sie ihn als Weiterleitungsport für Ihren Tunnel verwenden.-C
: Dieser Schalter aktiviert die Komprimierung, was den Ressourcenverbrauch minimieren und die Geschwindigkeit erhöhen kann.-N
: Diese Option teiltssh
mit, dass Sie keine entfernten Befehle ausführen möchten. Diese Einstellung ist nützlich, wenn Sie nur Ports weiterleiten möchten.-l sammy dein_server_ip
: Der-l
-Schalter ermöglicht es Ihnen, den Benutzer anzugeben, als den Sie sich anmelden möchten, sobald Sie eine Verbindung zum Server hergestellt haben. Stellen Sie sicher, dass Siesammy
unddein_server_ip
durch den Namen Ihres nicht-root-Benutzers und die IP-Adresse Ihres Servers ersetzen.
Hinweis: Dieser Befehl richtet einen SSH-Tunnel ein, der Informationen vom Port 5901
Ihres VNC-Servers über Port 22
auf jedem Rechner an Port 59000
auf Ihrem lokalen Rechner weiterleitet. Sofern Sie dem Voraussetzung Anleitung für die Erstkonfiguration des Servers für Ubuntu 22.04 gefolgt sind, haben Sie eine UFW-Regel hinzugefügt, die Verbindungen zu Ihrem Server über OpenSSH erlaubt.
Das ist sicherer als einfach die Firewall Ihres Servers zu öffnen, um Verbindungen zum Port 5901
zuzulassen, da dies jedem den Zugriff auf Ihren Server über VNC ermöglichen würde. Durch die Verbindung über einen SSH-Tunnel beschränken Sie den VNC-Zugriff auf Maschinen, die bereits SSH-Zugriff auf den Server haben.
Wenn Sie PuTTY zum Verbinden mit Ihrem Server verwenden, können Sie einen SSH-Tunnel erstellen, indem Sie mit der rechten Maustaste auf die obere Leiste des Terminalfensters klicken und dann die Option Einstellungen ändern… wählen:
Suchen Sie den Verbindung-Zweig im Baummenü auf der linken Seite des PuTTY-Konfigurationsfensters. Erweitern Sie den SSH-Zweig und klicken Sie auf Tunnel. Geben Sie auf dem Bildschirm Optionen zur Steuerung der SSH-Portweiterleitung 59000
als Quellport und localhost:5901
als Ziel ein, so:
Klicken Sie dann auf die Schaltfläche Hinzufügen und anschließend auf die Schaltfläche Anwenden, um den Tunnel zu implementieren.
Sobald der Tunnel aktiv ist, verwenden Sie einen VNC-Client, um eine Verbindung zu localhost:59000
herzustellen. Sie werden aufgefordert, sich mit dem Passwort zu authentifizieren, das Sie im Schritt 1 festgelegt haben.
Sobald Sie verbunden sind, sehen Sie den Standard-Xfce-Desktop. Es sollte ungefähr so aussehen:
Sie können auf Dateien in Ihrem Home-Verzeichnis mit dem Dateimanager oder von der Befehlszeile aus zugreifen, wie hier zu sehen ist:
Drücken Sie Strg+C
in Ihrem lokalen Terminal, um den SSH-Tunnel zu stoppen und zu Ihrem Prompt zurückzukehren. Dies trennt auch Ihre VNC-Sitzung.
Jetzt können Sie Ihren VNC-Server so konfigurieren, dass er als systemd-Dienst ausgeführt wird.
Schritt 4 – Ausführen von VNC als systemd-Dienst
Indem Sie den VNC-Server als systemd-Dienst einrichten, können Sie ihn bei Bedarf wie jeden anderen Dienst starten, stoppen und neu starten. Sie können auch die Verwaltungsbefehle von systemd verwenden, um sicherzustellen, dass VNC beim Booten Ihres Servers startet.
Zuerst erstellen Sie eine neue Unit-Datei namens /etc/systemd/system/[email protected]
:
Das @
-Symbol am Ende des Namens ermöglicht es uns, ein Argument zu übergeben, das Sie in der Dienstkonfiguration verwenden können. Sie werden dies verwenden, um den VNC-Anzeigehafen anzugeben, den Sie beim Verwalten des Dienstes verwenden möchten.
Fügen Sie die folgenden Zeilen zur Datei hinzu. Stellen Sie sicher, dass Sie den Wert von User, Group, WorkingDirectory und den Benutzernamen im Wert von PIDFILE entsprechend Ihrem Benutzernamen ändern:
[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 es bereits läuft. Der Befehl ExecStart
startet VNC und setzt die Farbtiefe auf 24-Bit-Farbe mit einer Auflösung von 1280×800. Sie können diese Startoptionen ebenfalls ändern, um Ihren Anforderungen zu entsprechen. Beachten Sie auch, dass der Befehl ExecStart
erneut die Option -localhost
enthält.
Speichern und schließen Sie die Datei.
Als nächstes informieren Sie das System über die neue Unit-Datei:
Aktivieren Sie die Unit-Datei:
Der 1
nach dem @
-Zeichen gibt an, über welche Anzeigenummer der Dienst angezeigt werden soll, in diesem Fall die Standardnummer :1
, wie in Schritt 2 besprochen wurde.
Stoppen Sie die aktuelle Instanz des VNC-Servers, falls sie noch läuft:
Dann starten Sie ihn wie jeden anderen systemd-Dienst:
Sie können überprüfen, ob er gestartet wurde, mit diesem Befehl:
Wenn er korrekt gestartet wurde, sollte die Ausgabe wie folgt aussehen:
Output● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-04-18 16:57:26 UTC; 20s ago
Process: 97088 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
Process: 97092 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status=0/SUCCESS)
Main PID: 97103 (Xtightvnc)
Tasks: 77 (limit: 4665)
Memory: 146.7M
CPU: 4.459s
CGroup: /system.slice/system-vncserver.slice/[email protected]
. . .
Ihr VNC-Server ist nun einsatzbereit, sobald Ihr Server hochfährt, und Sie können ihn mit systemctl
-Befehlen wie jeden anderen systemd-Dienst verwalten.
Auf der Clientseite wird jedoch kein Unterschied feststellbar sein. Um erneut eine Verbindung herzustellen, starten Sie Ihren SSH-Tunnel erneut:
Dann stellen Sie eine neue Verbindung mit Ihrer VNC-Client-Software zu localhost:59000
her, um sich mit Ihrem Server zu verbinden.
Abschluss
Sie haben jetzt einen gesicherten VNC-Server auf Ihrem Ubuntu 22.04-Server eingerichtet und in Betrieb genommen. Nun können Sie Ihre Dateien, Software und Einstellungen mit einer benutzerfreundlichen grafischen Benutzeroberfläche verwalten und grafische Software wie Webbrowser remote ausführen.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-22-04