Wie man Apache Guacamole verwendet, um eine VNC-Verbindung herzustellen
Vor kurzem hast du gelernt, wie du Apache Guacamole installierst und verwendest, um eine SSH-Verbindung auf einem Rocky Linux 8 basierten Server herzustellen. Eine der beliebtesten Anwendungen von Guacamole ist die Verwendung als VNC (Virtual Network Computing) Viewer. Mit VNC kannst du von überall aus auf deinen Desktop oder einen Server zugreifen, ohne einen 3rd-Party-Client installieren zu müssen.
In diesem Lernprogramm lernst du, wie du VNC auf deinem Linux-Server installierst und mit Guacamole eine VNC-Verbindung herstellst. Wir werden alle gängigen Distributionen abdecken und bei Bedarf auf Unterschiede eingehen.
Voraussetzungen
- Ein Server mit Rocky Linux, CentOS, AlmaLinux, Ubuntu oder Debian.
- Apache Guacamole sollte installiert sein. Befolge dazu unsere Anleitungen.
- Ein Nicht-Root-Benutzer mit sudo-Rechten ist auf dem Server, mit dem du dich verbindest, verfügbar.
- Mindestens 2 CPU-Kerne und 4 GB RAM auf deinen Remote-Servern für eine reibungslose VNC-Verbindung.
- Stelle sicher, dass alles auf dem neuesten Stand ist.CentOS / Rocky Linux / AlmaLinux
$ sudo dnf update
Ubuntu / Debian
$ sudo apt update && sudo apt upgrade
- Installiere grundlegende Hilfspakete. Einige davon sind vielleicht schon installiert.CentOS / Rocky Linux / AlmaLinux
$ sudo dnf install wget curl nano unzip yum-utils -y
Ubuntu / Debian
$ sudo apt install wget curl nano unzip -y
Schritt 1 – Installiere die Desktop-GUI auf deinem Server
Für unser Tutorial werden wir die grafische Umgebung Xfce installieren. Du kannst aber auch jede andere Umgebung deiner Wahl installieren. Führe die folgenden Befehle aus, um eine GUI zu installieren.
CentOS / Rocky Linux / AlmaLinux
$ sudo dnf install -y epel-release $ sudo dnf groupinstall -y "Xfce" "base-x" $ sudo systemctl set-default graphical $ sudo reboot
Wenn du unserem Apache Guacamole-Tutorial gefolgt bist, wird das EPEL-Repository bereits installiert sein, so dass du den ersten Befehl überspringen kannst. Der zweite Befehl installiert die eigentliche grafische Umgebung und die Bibliotheken, und der dritte Befehl setzt die GUI-Umgebung als Standard. Du musst den Server neu starten, damit die Installation wirksam wird.
Ubuntu / Debian
$ sudo apt install xfce4 xfce4-goodies $ sudo systemctl set-default graphical $ sudo reboot
Schritt 2 – TigerVNC Server installieren
Es gibt viele verschiedene VNC-Serveranwendungen, die du auf deinem System installieren kannst. Für unser Tutorial werden wir die TigerVNC Server Software installieren.
Führe den folgenden Befehl aus, um den TigerVNC-Server zu installieren.
CentOS / Rocky Linux / AlmaLinux
$ sudo dnf install tigervnc-server
Ubuntu / Debian
$ sudo apt install tigervnc-standalone-server
Schritt 3 – VNC-Benutzeranmeldedaten erstellen
Der nächste Schritt besteht darin, einen Systembenutzer für VNC zu erstellen, von dem aus die Verbindung hergestellt werden soll.
CentOS / Rocky Linux / AlmaLinux
Führe die folgenden Befehle aus, um einen neuen Benutzer zu erstellen und ein Passwort festzulegen. Ersetze vncuser
durch einen Benutzernamen deiner Wahl.
$ sudo adduser vncuser $ sudo passwd vncuser
Im nächsten Schritt musst du ein Zugangspasswort erstellen, mit dem du dich vom VNC-Client aus mit dem Server auf deinem Rechner verbinden kannst.
Wechsle zu vncuser
.
$ sudo su - vncuser
Lege ein VNC-Zugangspasswort fest.
$ vncpasswd Password: Verify: Would you like to enter a view-only password (y/n)? y Password: Verify:
Du wirst aufgefordert, ein Passwort zu erstellen und dieses zu bestätigen. Als Nächstes wirst du gefragt, ob du ein Passwort nur für die Ansicht erstellen möchtest. Ein Nur-Ansicht-Passwort ist nützlich, wenn du den VNC-Zugang auf die Anzeige des Systems beschränken und jegliche Interaktion mit Maus oder Tastatur unterbinden willst. Gib y
ein, wenn du ein solches Passwort einrichten willst, oder gib n
ein, um den Vorgang abzuschließen.
Beende die Shell vncuser
.
$ exit
Ubuntu / Debian
Führe den folgenden Befehl aus, um einen neuen Benutzer zu erstellen und ein Passwort festzulegen. Ersetze vncuser
durch einen Benutzernamen deiner Wahl.
$ sudo adduser vncuser Adding user `vncuser' ... Adding new group `vncuser' (1001) ... Adding new user `vncuser' (1001) with group `vncuser' ... Creating home directory `/home/vncuser' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for vncuser Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
Wechsle in die vncuser
.
$ sudo su - vncuser
Lege ein Passwort für den VNC-Zugang fest.
$ vncpasswd Password: Verify: Would you like to enter a view-only password (y/n)? y Password: Verify:
Wir müssen die Startdatei für TigerVNC so konfigurieren, dass Xfce verwendet wird.
Öffne die Datei ~/.vnc/xstartup
zum Bearbeiten.
$ sudo nano ~/.vnc/xstartup
Füge den folgenden Code in die Datei ein.
#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du zum Speichern aufgefordert wirst.
Über die Datei ~/.vnc/config
kannst du zusätzliche Optionen für den VNC konfigurieren. Erstelle und öffne die Datei zur Bearbeitung.
$ sudo nano ~/.vnc/config
Füge den folgenden Code in die Datei ein.
geometry=1024x768 dpi=96 depth=24
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du zum Speichern aufgefordert wirst.
Teste den VNC-Server.
$ vncserver /usr/bin/xauth: file /home/vncuser/.Xauthority does not exist New 'vncdesktop:1 (vncuser)' desktop at :1 on machine vncdesktop Starting applications specified in /home/vncuser/.vnc/xstartup Log file is /home/vncuser/.vnc/vncdesktop:1.log Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/vncuser/.vnc/passwd :1 to connect to the VNC server.
Mit dem folgenden Befehl kannst du eine Liste aller aktuellen VNC-Sitzungen abrufen.
$ vncserver -list TigerVNC server sessions: X DISPLAY # RFB PORT # PROCESS ID :1 5901 1029
Als Nächstes müssen wir den Prozess beenden, da wir im nächsten Schritt eine Servicedatei für ihn erstellen werden.
$ vncserver -kill :1 Killing Xtigervnc process ID 1029... success!
Beende die Benutzershell.
$ exit
Schritt 4 – VNC Systemd Unit Datei erstellen
CentOS / Rocky Linux / AlmaLinux
Die systemd Service Unit-Datei von TigerVNC ist im Verzeichnis /lib/systemd/system
verfügbar. Kopiere die Datei in das Verzeichnis /etc/systemd/system
.
$ sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
Der VNC-Server läuft standardmäßig auf Port 5900. Jeder Benutzer sollte seine VNC-Serverinstanz auf einem eigenen Port laufen lassen. Die Zahl :1
am Ende des Befehls weist VNC an, den Dienst auf einem Unterport von 5900 auszuführen. Daher entspricht :1
dem Port 5900, :2
dem Port 5902 und so weiter.
VNC sollte nicht nur die Portnummer kennen, auf der der Dienst laufen soll, sondern du musst auch angeben, welcher Benutzer den Server unter welcher Portnummer laufen lassen soll. Du kannst dies konfigurieren, indem du die Datei /etc/tigervnc/vncserver.users
bearbeitest. Öffne sie zur Bearbeitung.
$ sudo nano /etc/tigervnc/vncserver.users
Gib den Wert :1=vncuser
direkt vor # :2=andrew
ein, so dass sie wie folgt aussieht.
# TigerVNC User assignment # # This file assigns users to specific VNC display numbers. # The syntax is <display>=<username>. E.g.: # :1=vncuser # :2=andrew # :3=lisa
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du zum Speichern aufgefordert wirst.
Ubuntu / Debian
Auf Ubuntu- oder Debian-Systemen installiert das Installationsprogramm keine systemd-Dienstdatei. Du musst sie manuell erstellen. Erstelle und öffne die systemd Unit-Datei für TigerVNC.
$ sudo nano /etc/systemd/system/vncserver@.service
Füge den folgenden Code in die Datei ein.
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=simple User=vncuser PAMName=login PIDFile=/home/%u/.vnc/%H%i.pid ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :' ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du zum Speichern aufgefordert wirst.
Der nächste Schritt ist für alle Linux-Distributionen gleich.
Lade den systemd-Daemon neu, um den Dienst zu aktivieren.
$ sudo systemctl daemon-reload
Schritt 5 – VNC Server starten
CentOS / Rocky Linux / AlmaLinux
Starte den VNC-Serverdienst.
$ sudo systemctl start vncserver@:1
Wenn du möchtest, dass der Dienst auch nach einem Neustart des Systems weiterläuft, kannst du ihn aktivieren.
$ sudo systemctl enable vncserver@:1
Überprüfe den Status des Dienstes.
$ sudo systemctl status vncserver@:1 ? vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2022-03-16 01:16:18 UTC; 6s ago Process: 6777 ExecStart=/usr/libexec/vncsession-start :1 (code=exited, status=0/SUCCESS) Main PID: 6784 (vncsession) Tasks: 0 (limit: 11179) Memory: 1.1M CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service ? 6784 /usr/sbin/vncsession vncuser :1 Mar 16 01:16:18 guacamole systemd[1]: Starting Remote desktop service (VNC)... Mar 16 01:16:18 guacamole systemd[1]: Started Remote desktop service (VNC).
Ubuntu / Debian
Starten Sie den VNC-Serverdienst.
$ sudo systemctl start vncserver@1.service
Aktiviere den VNC-Dienst.
$ sudo systemctl enable vncserver@1.service
Überprüfe den Status des Dienstes.
$ sudo systemctl status vncserver@1.service ? vncserver@1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2022-03-19 09:42:28 UTC; 6s ago Process: 1420 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 1455 (vncserver) Tasks: 0 (limit: 4686) Memory: 884.0K CGroup: /system.slice/system-vncserver.slice/vncserver@1.service ? 1455 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg Mar 19 09:42:28 vncdesktop systemd[1]: Starting Remote desktop service (VNC)... Mar 19 09:42:28 vncdesktop systemd[1420]: pam_unix(login:session): session opened for user vncuser by (uid=0) Mar 19 09:42:28 vncdesktop systemd[1]: Started Remote desktop service (VNC). Mar 19 09:42:29 vncdesktop systemd[1455]: pam_unix(login:session): session opened for user vncuser by (uid=0)
Schritt 6 – Firewall konfigurieren
Um VNC über das Netzwerk zugänglich zu machen, müssen wir seine Ports öffnen.
CentOS / Rocky Linux / AlmaLinux
Führe den folgenden Befehl aus, um die VNC-Ports zu öffnen und die Firewall neu zu laden.
$ sudo firewall-cmd --permanent --add-service=vnc-server $ sudo firewall-cmd --reload
Ubuntu / Debian
$ sudo ufw allow 5901:5910/tcp $ sudo ufw reload
Schritt 7 – Erstelle eine VNC-Verbindung zum CentOS / Rocky Linux / AlmaLinux Server
Öffne deine Guacamole-URL und gib deine Anmeldedaten ein, um dich einzuloggen.
Besuche die Registerkarte Verbindungen unter Guacamole-Einstellungen. Klicke auf die Schaltfläche Neue Verbindung.
Wähle einen Namen für deine Verbindung und wähle VNC aus dem Dropdown-Menü.
Gib im Abschnitt Parameter die IP-Adresse deines Servers (in unserem Fall 167.172.46.187) als Hostname und 5901 als Port ein. Im AbschnittAuthentifizierung gibst du deinen VNC-Systembenutzernamen und dein Passwort ein.
Wenn du zusätzliche Einstellungen vornehmen möchtest, tue dies. Klicke auf Speichern, um das Hinzufügen der Verbindung abzuschließen.
Zugriff auf deinen Rechner mit VNC
Besuche das Guacamole-Dashboard und klicke auf deine VNC-Verbindung unter dem Abschnitt Alle Verbindungen.
Du wirst mit dem Sperrbildschirm deines Servers begrüßt.
Hebe ihn auf und gib deine VNC-Benutzeranmeldedaten ein.
Drücke auf die Schaltfläche Entsperren, um zum Startbildschirm deines Servers/Desktops zu gelangen.
Du kannst mit der Arbeit an deinem Rechner beginnen.
Schritt 8 – Erstelle eine VNC-Verbindung zu einem entfernten Ubuntu/Debian-Server
Wenn sich deine Guacamole-Installation und die Desktop-Umgebung auf demselben Server befinden, kannst du mit den obigen Schritten per VNC auf deinen Server zugreifen. Unsere Rocky-Linux-Installation befand sich auf demselben Server, aber unsere Ubuntu-Umgebung auf einem anderen Server. In diesem Fall werden wir SSH-Tunneling verwenden, um eine VNC-Verbindung zum Server herzustellen, da dies eine sicherere Methode ist.
Öffne deine Guacamole-URL und gib deine Anmeldedaten ein, um dich einzuloggen.
Besuche die Registerkarte Verbindungen unter Guacamole-Einstellungen. Klicke auf die Schaltfläche Neue Verbindung.
Wähle einen Namen für deine Verbindung und wähle VNC aus dem Dropdown-Menü.
Gib im Abschnitt Parameter die Adresse localhost
als Hostname und 5001 als Port ein. Lass den Abschnitt Authentifizierung leer, da wir ihn im nächsten Schritt verwenden werden. Wir werden auch gleich erklären, warum wir localhost
als Host verwenden.
Wenn du weitere Einstellungen vornehmen möchtest, kannst du das tun. Klicke auf Speichern, um das Hinzufügen der Verbindung abzuschließen.
Einen SSH-Tunnel erstellen
Führe den folgenden Befehl im Terminal des Servers aus, der Guacamole hostet.
$ ssh -L 5001:localhost:5901 vncuser@104.245.36.77
Lass uns kurz durchgehen, was hier passiert. Der obige Befehl leitet die SSH-Verbindung deines Systems über eine lokale Portweiterleitung an den Fernserver weiter.
- Das Flag
-L
legt die lokale Portweiterleitung fest. - Der Port
5001
ist der Port auf deinem Guacamole-Rechner, über den wir auf den Fernserver zugreifen können. Du kannst auch einen anderen Port wählen, wenn du möchtest. localhost:5901
ist der entfernte VNC-Server und die Display-Nummer (und die dazugehörige Port-Nummer), mit der wir uns verbinden sollen. Da wir eine lokale Portweiterleitung vornehmen, wird die Adresse des Fernservers für uns inlocalhost
übersetzt.vncuser@104.245.36.77
In unserem Fall sind das der SSH-Benutzer und die IP-Adresse des entfernten Ubuntu/Debian-Servers, auf den wir zugreifen.
Der SSH-Tunnel bleibt offen, solange der Befehl ausgeführt wird. Tippe exit
in das Terminal ein, um den Tunnel zu verlassen und die VNC-Verbindung zu schließen.
Zugriff auf deinen Rechner über VNC
Besuche das Guacamole-Dashboard und klicke auf deine VNC-Verbindung unter dem Abschnitt Alle Verbindungen.
Es erscheint eine Passwortabfrage, in der du das VNC-Passwort eingeben musst, das du mit dem Befehl vncpasswd
festgelegt hast. Gib das Passwort ein und klicke auf Weiter, um fortzufahren.
Nach erfolgreicher Bestätigung wirst du auf den Desktop deines Systems weitergeleitet.
Du kannst mit der Arbeit an deinem Rechner beginnen.
Fazit
Damit ist unsere Anleitung zur Verwendung von Apache Guacamole zur Herstellung einer VNC-Verbindung mit einem Linux-Server abgeschlossen. Wenn du noch Fragen hast, schreibe sie in die Kommentare unten.