Einführung
Virtual Network Computing oder VNC ist ein Verbindungssystem, mit dem Sie mit Tastatur und Maus mit einer grafischen Desktop-Umgebung auf einem Remote-Server interagieren können. Dies erleichtert Benutzern, die noch nicht mit der Befehlszeile vertraut sind, das Verwalten von Dateien, Software und Einstellungen auf einem Remoteserver.
In diesem Handbuch richten Sie einen VNC-Server auf einem Ubuntu 18.04-Server ein und stellen eine sichere Verbindung über einen SSH-Tunnel her. Sie verwendenTightVNC, ein schnelles und leichtes Fernbedienungspaket. Diese Wahl stellt sicher, dass unsere VNC-Verbindung auch bei langsameren Internetverbindungen reibungslos und stabil ist.
Voraussetzungen
Um dieses Tutorial abzuschließen, benötigen Sie:
-
Ein Ubuntu 18.04-Server, der von folgendenthe Ubuntu 18.04 initial server setup guide eingerichtet wurde, einschließlich eines Sudo-Nicht-Root-Benutzers und einer Firewall.
-
Ein lokaler Computer mit einem installierten VNC-Client, der VNC-Verbindungen über SSH-Tunnel unterstützt.
[[Schritt 1 - Installieren der Desktop-Umgebung und des VNC-Servers]] == Schritt 1 - Installieren der Desktop-Umgebung und des VNC-Servers
Standardmäßig wird auf einem Ubuntu 18.04-Server keine grafische Desktop-Umgebung oder ein VNC-Server installiert. Wir beginnen daher mit der Installation dieser Umgebungen. Insbesondere werden wir Pakete für die neueste Desktop-Umgebung vonXfceund das TightVNC-Paket installieren, das im offiziellen Ubuntu-Repository verfügbar ist.
Aktualisieren Sie auf Ihrem Server Ihre Paketliste:
sudo apt update
Installieren Sie nun die Xfce-Desktop-Umgebung auf Ihrem Server:
sudo apt install xfce4 xfce4-goodies
Installieren Sie nach Abschluss dieser Installation den TightVNC-Server:
sudo apt install tightvncserver
Um die Erstkonfiguration des VNC-Servers nach der Installation abzuschließen, verwenden Sie den Befehlvncserver
, um ein sicheres Kennwort einzurichten und die Erstkonfigurationsdateien zu erstellen:
vncserver
Sie werden aufgefordert, ein Kennwort einzugeben und zu bestätigen, um remote auf Ihr Gerät zuzugreifen:
OutputYou 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 abgeschnitten.
Sobald Sie das Kennwort bestätigt haben, können Sie ein Kennwort nur zum Anzeigen erstellen. Benutzer, die sich mit dem Nur-Ansicht-Kennwort anmelden, können die VNC-Instanz nicht mit ihrer Maus oder Tastatur steuern. Dies ist eine hilfreiche Option, wenn Sie anderen Personen, die Ihren VNC-Server verwenden, etwas demonstrieren möchten, dies jedoch nicht erforderlich ist.
Der Prozess erstellt dann die erforderlichen Standardkonfigurationsdateien und Verbindungsinformationen für den Server:
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
Jetzt konfigurieren wir den VNC-Server.
[[Schritt 2 - Konfigurieren des VNC-Servers]] == Schritt 2 - Konfigurieren des VNC-Servers
Der VNC-Server muss wissen, welche Befehle beim Start ausgeführt werden sollen. Insbesondere muss VNC wissen, mit welchem grafischen Desktop eine Verbindung hergestellt werden soll.
Diese Befehle befinden sich in einer Konfigurationsdatei mit dem Namenxstartup
im Ordner.vnc
unter Ihrem Home-Verzeichnis. Das Startskript wurde erstellt, als Sie im vorherigen Schrittvncserver
ausgeführt haben. Wir erstellen jedoch ein eigenes Skript, um den Xfce-Desktop zu starten.
Beim erstmaligen Einrichten von VNC wird eine Standardserverinstanz an Port5901
gestartet. Dieser Port wird alsdisplay port bezeichnet und von VNC als:1
bezeichnet. VNC kann mehrere Instanzen an anderen Anzeigeports starten, z. B.:2
,:3
usw.
Da wir die Konfiguration des VNC-Servers ändern werden, stoppen Sie zuerst die VNC-Serverinstanz, die auf Port5901
ausgeführt wird, mit dem folgenden Befehl:
vncserver -kill :1
Die Ausgabe sollte folgendermaßen aussehen, obwohl eine andere PID angezeigt wird:
OutputKilling Xtightvnc process ID 17648
Sichern Sie das Original, bevor Sie die Dateixstartup
ändern:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Erstellen Sie nun eine neuexstartup
-Datei und öffnen Sie sie in Ihrem Texteditor:
nano ~/.vnc/xstartup
Befehle in dieser Datei werden automatisch ausgeführt, wenn Sie den VNC-Server starten oder neu starten. Wir benötigen VNC, um Ihre Desktop-Umgebung zu starten, falls dies noch nicht geschehen ist. Fügen Sie der Datei die folgenden Befehle hinzu:
~/.vnc/xstartup#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Der erste Befehl in der Datei,xrdb $HOME/.Xresources
, weist das GUI-Framework von VNC an, die.Xresources
-Datei des Serverbenutzers zu lesen. In.Xresources
kann ein Benutzer Änderungen an bestimmten Einstellungen des grafischen Desktops vornehmen, z. B. Terminalfarben, Cursorthemen und Schriftwiedergabe. Der zweite Befehl weist den Server an, Xfce zu starten. Hier finden Sie die gesamte Grafiksoftware, die Sie zur komfortablen Verwaltung Ihres Servers benötigen.
Damit der VNC-Server diese neue Startdatei ordnungsgemäß verwenden kann, müssen wir sie ausführbar machen.
sudo chmod +x ~/.vnc/xstartup
Starten Sie jetzt den VNC-Server neu.
vncserver
Es wird eine Ausgabe ähnlich der folgenden angezeigt:
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
Stellen Sie mit der vorgenommenen Konfiguration von unserem lokalen Computer aus eine Verbindung zum Server her.
[[Schritt 3 - Sicheres Verbinden des VNC-Desktops]] == Schritt 3 - Sicheres Verbinden des VNC-Desktops
VNC selbst verwendet beim Herstellen einer Verbindung keine sicheren Protokolle. Wir verwenden einen SSH-Tunnel, um eine sichere Verbindung zu unserem Server herzustellen, und weisen dann unseren VNC-Client an, diesen Tunnel zu verwenden, anstatt eine direkte Verbindung herzustellen.
Erstellen Sie auf Ihrem lokalen Computer eine SSH-Verbindung, die sicher an dielocalhost
-Verbindung für VNC weiterleitet. Sie können dies über das Terminal unter Linux oder MacOS mit dem folgenden Befehl tun:
ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
Der Schalter-L
gibt die Portbindungen an. In diesem Fall binden wir Port5901
der Remoteverbindung an Port5901
auf Ihrem lokalen Computer. Der Schalter-C
aktiviert die Komprimierung, während der Schalter-N
ssh
mitteilt, dass kein Remote-Befehl ausgeführt werden soll. Der Schalter-l
gibt den Namen der Remote-Anmeldung an.
Denken Sie daran,sammy
undyour_server_ip
durch den sudo-Nicht-Root-Benutzernamen und die IP-Adresse Ihres Servers zu ersetzen.
Wenn Sie einen grafischen SSH-Client wie PuTTY verwenden, verwenden Sieyour_server_ip
als Verbindungs-IP und legen Sielocalhost:5901
als neuen weitergeleiteten Port in den SSH-Tunneleinstellungen des Programms fest.
Verwenden Sie nach dem Ausführen des Tunnels einen VNC-Client, um eine Verbindung zulocalhost:5901
herzustellen. Sie werden aufgefordert, sich mit dem in Schritt 1 festgelegten Kennwort zu authentifizieren.
Sobald Sie verbunden sind, wird der Standard-Xfce-Desktop angezeigt. Es sollte ungefähr so aussehen:
Sie können mit dem Dateimanager oder über die Befehlszeile auf Dateien in Ihrem Ausgangsverzeichnis zugreifen, wie hier gezeigt:
Drücken SieCTRL+C
in Ihrem Terminal, um den SSH-Tunnel zu stoppen und zu Ihrer Eingabeaufforderung zurückzukehren. Dadurch wird auch Ihre VNC-Sitzung getrennt.
Als nächstes richten wir unseren VNC-Server als Dienst ein.
[[Schritt-4 -—- Ausführen von VNC als Systemdienst]] == Schritt 4 - Ausführen von VNC als Systemdienst
Als Nächstes richten wir den VNC-Server als systemd-Dienst ein, damit wir ihn wie jeden anderen Dienst nach Bedarf starten, stoppen und neu starten können. Dadurch wird auch sichergestellt, dass VNC beim Neustart des Servers gestartet wird.
Erstellen Sie zunächst mit Ihrem bevorzugten Texteditor eine neue Einheitendatei mit dem Namen/etc/systemd/system/[email protected]
:
sudo nano /etc/systemd/system/[email protected]
Das@
-Symbol am Ende des Namens lässt uns ein Argument übergeben, das wir in der Dienstkonfiguration verwenden können. Hiermit geben wir den VNC-Anzeigeport an, den wir bei der Verwaltung des Dienstes verwenden möchten.
Fügen Sie der Datei die folgenden Zeilen hinzu. Stellen Sie sicher, dass Sie den Wert vonUser,Group,WorkingDirectory und den Benutzernamen im Wert vonPIDFILE entsprechend Ihrem Benutzernamen ändern:
/etc/systemd/system/[email protected] [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 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Der BefehlExecStartPre
stoppt VNC, wenn es bereits ausgeführt wird. Der BefehlExecStart
startet VNC und setzt die Farbtiefe auf 24-Bit-Farbe mit einer Auflösung von 1280 x 800. Sie können diese Startoptionen auch an Ihre Anforderungen anpassen.
Speichern und schließen Sie die Datei.
Machen Sie das System als Nächstes auf die neue Unit-Datei aufmerksam.
sudo systemctl daemon-reload
Aktivieren Sie die Gerätedatei.
sudo systemctl enable [email protected]
Das1
nach dem@
-Zeichen gibt an, über welcher Anzeigenummer der Dienst angezeigt werden soll, in diesem Fall die Standardeinstellung:1
, wie in Schritt 2 erläutert.
Stoppen Sie die aktuelle Instanz des VNC-Servers, falls dieser noch ausgeführt wird.
vncserver -kill :1
Starten Sie es dann wie jeden anderen systemd-Dienst.
sudo systemctl start vncserver@1
Sie können überprüfen, ob es mit diesem Befehl gestartet wurde:
sudo systemctl status vncserver@1
Wenn es richtig gestartet wurde, sollte die Ausgabe folgendermaßen aussehen:
Output● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago
Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
Main PID: 22330 (Xtightvnc)
...
Ihr VNC-Server ist jetzt verfügbar, wenn Sie den Computer neu starten.
Starten Sie Ihren SSH-Tunnel erneut:
ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
Stellen Sie dann mit Ihrer VNC-Client-Software eine neue Verbindung zulocalhost:5901
her, um eine Verbindung zu Ihrem Computer herzustellen.
Fazit
Sie haben jetzt einen gesicherten VNC-Server auf Ihrem Ubuntu 18.04-Server. Jetzt können Sie Ihre Dateien, Software und Einstellungen mit einer benutzerfreundlichen und vertrauten grafischen Oberfläche verwalten und grafische Software wie Webbrowser remote ausführen.