So installieren und konfigurieren Sie VNC unter Ubuntu 18.04

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.

    • Unter Windows können SieTightVNC,RealVNC oderUltraVNC verwenden.

    • Unter macOS können Sie das integrierte ProgrammScreen Sharing oder eine plattformübergreifende App wieRealVNC verwenden.

    • Unter Linux können Sie aus vielen Optionen auswählen, einschließlichvinagre,krdc,RealVNC oderTightVNC.

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

VNC connection to Ubuntu 18.04 server

Sie können mit dem Dateimanager oder über die Befehlszeile auf Dateien in Ihrem Ausgangsverzeichnis zugreifen, wie hier gezeigt:

Files via VNC connection to Ubuntu 18.04

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.