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/[email protected] /etc/systemd/system/[email protected]: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/[email protected]

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 [email protected]:1

Wenn du möchtest, dass der Dienst auch nach einem Neustart des Systems weiterläuft, kannst du ihn aktivieren.

$ sudo systemctl enable [email protected]:1

Überprüfe den Status des Dienstes.

$ sudo systemctl status [email protected]:1
? [email protected]:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/[email protected]: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/[email protected]: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 [email protected]

Aktiviere den VNC-Dienst.

$ sudo systemctl enable [email protected]

Überprüfe den Status des Dienstes.

$ sudo systemctl status [email protected]
? [email protected] - Remote desktop service (VNC)
     Loaded: loaded (/etc/systemd/system/[email protected]; 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/[email protected]
             ? 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.

Guacamole Neue Verbindung

Wähle einen Namen für deine Verbindung und wähle VNC aus dem Dropdown-Menü.

Guacamole VNC Verbindungstyp

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.

Guacamole VNC Parameter

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.

Guacamole VNC Verbindungsliste

Du wirst mit dem Sperrbildschirm deines Servers begrüßt.

Guacamole VNC Desktop Lockscreen

Hebe ihn auf und gib deine VNC-Benutzeranmeldedaten ein.

Guacamole VNC Desktop Anmeldebildschirm

Drücke auf die Schaltfläche Entsperren, um zum Startbildschirm deines Servers/Desktops zu gelangen.

Guacamole VNC Rocky Linux Desktop

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.

Guacamole Neue Verbindung

Wähle einen Namen für deine Verbindung und wähle VNC aus dem Dropdown-Menü.

Guacamole Ubuntu VNC Verbindungstyp

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.

Guacamole VNC-Parameter für SSH-Tunneling

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 [email protected]

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 in localhost übersetzt.
  • [email protected] 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.

Guacamole VNC Verbindungsliste

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.

Guacamole VNC Zugang Passwortabfrage

Nach erfolgreicher Bestätigung wirst du auf den Desktop deines Systems weitergeleitet.

Guacamole VNC Ubuntu Desktop Bildschirm

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.

Das könnte dich auch interessieren …