Dieses Tutorial zeigt Ihnen, wie Sie Guacamole Remote Desktop auf einem Ubuntu 20.04-Server einrichten. Guacamole ist ein kostenloses Open-Source-Remote-Desktop-Gateway, das von der Apache Software Foundation entwickelt wurde.
Guacamole-Funktionen
- Es ermöglicht Ihnen, über einen Webbrowser auf Ihren Remote-Desktop zuzugreifen. Clientseitig muss keine weitere Software installiert werden.
- Unterstützt Standardprotokolle wie VNC, RDP, SSH und Kubernetes.
- VNC-Sitzungen können grafisch aufgezeichnet werden.
- Single Sign-on mit CAS, OpenID Connect oder SAML 2.0
- Wake-on-LAN
- Verwalten Sie problemlos mehrere Remote-Desktop-Sitzungen.
- Unterstützt TOTP-Zwei-Faktor-Authentifizierung.
- Unterstützt Zwischenablage (Kopieren und Einfügen) und Dateiübertragung über SFTP.
- Unterstützt Audioeingabe und -ausgabe
- und mehr.
Guacamole selbst ist kein Remote-Desktop-Protokoll. Es ist ein Proxy zwischen dem Remote-Desktop und dem Client, sodass der Remote-Desktop in einem Webbrowser angezeigt und gesteuert werden kann.
Schritt 1:Erstellen Sie den Guacamole-Server aus der Quelle
Melden Sie sich bei Ihrem Ubuntu 20.04-Server an und installieren Sie Abhängigkeitspakete.
sudo apt update sudo apt install build-essential libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev libpulse-dev libvorbis-dev libwebp-dev libssl-dev libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev libavformat-dev
Laden Sie die neueste stabile Version von Guacamole-Server herunter.
wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz
Extrahieren Sie das Archiv.
tar -xvf guacamole-server-1.2.0.tar.gz
Wechseln Sie in das entpackte Verzeichnis.
cd guacamole-server-1.2.0
Konfigurieren Sie die Build-Umgebung.
./configure --with-init-dir=/etc/init.d
Dann kompilieren Sie guacamole-server.
sudo make
Installieren Sie den Guacamole-Server.
sudo make install
Aktualisieren Sie den System-Cache der installierten Bibliotheken.
sudo ldconfig
Laden Sie systemd neu, damit es guacd
finden kann (Guacamole-Proxy-Daemon)-Dienst installiert in /etc/init.d/
Verzeichnis.
sudo systemctl daemon-reload
Starten Sie den guacd
Dienst.
sudo systemctl start guacd
Autostart beim Booten aktivieren.
sudo systemctl enable guacd
Überprüfen Sie den Status.
systemctl status guacd
Wie Sie sehen können, ist es aktiv (wird ausgeführt) .
Guacd lauscht auf 127.0.0.1:4822
, wie mit ss
gezeigt werden kann Dienstprogramm.
sudo ss -lnpt | grep guacd
Schritt 2:Installieren Sie die Guacamole-Webanwendung
Die Guacamole-Webanwendung ist in Java geschrieben, daher müssen wir einen Java-Servlet-Container wie Apache Tomcat installieren.
sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user
Apache Tomcat lauscht auf Port 8080, wie gezeigt werden kann mit:
sudo ss -lnpt | grep java
Wenn Sie andere Software haben, die Port 8080 überwacht, kann Tomcat keine Verbindung zu Port 8080 herstellen. Sie sollten den anderen Prozess so konfigurieren, dass er einen anderen Port verwendet, und dann Tomcat neu starten (sudo systemctl restart tomcat9
). ).
Laden Sie als Nächstes die Guacamole-Webanwendung herunter.
wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war
Verschieben Sie die Datei in das Webanwendungsverzeichnis (/var/lib/tomcat9/webapps
) und gleichzeitig die Datei umbenennen (Versionsnummer löschen).
sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war
Starten Sie Tomcat und guacd neu.
sudo systemctl restart tomcat9 guacd
Schritt 3:Guacamole konfigurieren
Erstellen Sie ein Konfigurationsverzeichnis für Guacamole.
sudo mkdir /etc/guacamole/
Erstellen Sie eine Konfigurationsdatei.
sudo nano /etc/guacamole/guacamole.properties
Fügen Sie dieser Datei die folgenden Zeilen hinzu. Einige Leute sagen vielleicht, dass Sie diese Zeilen nicht hinzufügen müssen, da dies die Standardwerte sind. Ich zeige Ihnen eine grundlegende Konfiguration, damit Sie sie bei Bedarf anpassen können.
# Hostname and port of guacamole proxy guacd-hostname: localhost guacd-port: 4822 # Auth provider class (authenticates user/pass combination, needed if using the provided login screen) auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider basic-user-mapping: /etc/guacamole/user-mapping.xml
Speichern und schließen Sie die Datei. Das Standard-Authentifizierungsmodul in Guacamole liest Benutzernamen und Passwörter aus einer XML-Datei:/etc/guacamole/user-mapping.xml
. Bevor wir diese Datei erstellen, müssen wir mit dem folgenden Befehl einen MD5-Hash für Ihr Passwort generieren. Ersetzen Sie your_password
mit Ihrem bevorzugten Passwort.
echo -n your_password | openssl md5
Beispielausgabe:
(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517
Erstellen Sie als Nächstes die XML-Datei für die Benutzerzuordnung.
sudo nano /etc/guacamole/user-mapping.xml
Fügen Sie die folgenden Zeilen hinzu. Hier geben wir an, dass das Backend das VNC-Protokoll (Virtual Network Computing) verwendet. Ersetzen Sie den Benutzernamen und den Passwort-Hash. Wir werden später ein VNC-Passwort erstellen.
<user-mapping> <!-- Per-user authentication and config information --> <authorize username="your_preferred_username" password="1060b7b46a3bd36b3a0d66e0127d0517" encoding="md5"> <connection name="default"> <protocol>vnc</protocol> <param name="hostname">localhost</param> <param name="port">5901</param> <param name="password">vnc_password</param> </connection> </authorize> </user-mapping>
Speichern und schließen Sie die Datei. Starten Sie Tomcat und guacd neu.
sudo systemctl restart tomcat9 guacd
Schritt 4:Installieren Sie eine Desktop-Umgebung auf Ubuntu 20.04 Server
Da wir einen Remote-Desktop einrichten werden, benötigen wir eine Desktop-Umgebung. Stellen Sie sicher, dass Ihr Server über genügend RAM verfügt, bevor Sie eine Desktop-Umgebung installieren. Es gibt viele Desktop-Umgebungen. Ich habe festgestellt, dass die leichte XFCE-Desktopumgebung gut mit VNC funktioniert, also installieren Sie sie mit dem folgenden Befehl.
sudo apt install xfce4 xfce4-goodies firefox
Während der Installation werden Sie möglicherweise aufgefordert, einen Standardanzeigemanager auszuwählen. Diese Auswahl spielt keine große Rolle, da Sie den Anmeldebildschirm in einer VNC-Sitzung nicht sehen.
Da auf dem Server eine Desktop-Umgebung ausgeführt wird, wird dringend empfohlen, eine Firewall wie UFW zu verwenden, um den Zugriff einzuschränken und nur die erforderlichen Ports für die Öffentlichkeit zu öffnen. Sie können das folgende Tutorial lesen, um zu erfahren, wie Sie UFW unter Ubuntu aktivieren und verwenden.
- So verwenden Sie die UFW-Firewall unter Debian, Ubuntu, Linux Mint
Schritt 5:Installieren Sie einen VNC-Server auf einem Ubuntu 20.04-Server
Es gibt mehrere VNC-Server-Software für Linux-Benutzer. Wir werden den TigerVNC-Server verwenden, da er am besten mit Guacamole funktioniert.
sudo apt install tigervnc-standalone-server
Führen Sie den folgenden Befehl aus, um den VNC-Server zu starten.
vncserver
Wenn TigerVNC zum ersten Mal startet, werden Sie aufgefordert, ein VNC-Passwort festzulegen. Beachten Sie, dass das Passwort nicht länger als 8 Zeichen sein sollte. Dann können Sie wählen, ob Sie ein Nur-Lesen-Passwort benötigen.
Jetzt sollten Sie die /etc/guacamole/user-mapping.xml
bearbeiten Datei und ändern Sie das VNC-Passwort. Starten Sie dann Tomcat und guacd neu.
sudo systemctl restart tomcat9 guacd
Der vncserver
Der Befehl erstellt zwei Dateien in Ihrem Home-Verzeichnis.
- ~/.Xauthrirty
- ~/.vnc/xstartup
Die Datei xstartup gibt die Anwendungen an, die vom TigerVNC-Server gestartet werden. Bearbeiten Sie diese Datei.
nano ~/.vnc/xstartup
Ändern
#!/bin/sh
zu
#!/bin/bash
Denn Bash ist die Standard-Shell unter Linux. Kommentieren Sie dann die folgenden Zeilen aus. (Fügen Sie ein #
hinzu Zeichen am Anfang jeder Zeile).
xsetroot -solid grey export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession
Fügen Sie als Nächstes unten die folgende Zeile hinzu, wodurch der TigerVNC-Server die LXQT-Desktopumgebung startet. Die startxfce4
Binary wird von der xfce4-session
installiert Paket.
startxfce4 &
Speichern und schließen Sie die Datei.
Fehlerbehebung
Wenn Ihr tigerVNC-Server die Datei ~/.vnc/xstartup
nicht erstellt hat Datei und der VNC-Server ist wie folgt fehlgeschlagen:
Dann können Sie die Datei manuell erstellen.
nano ~/.vnc/xstartup
Fügen Sie der Datei die folgenden Zeilen hinzu.
#!/bin/sh xrdb $HOME/.Xresources startxfce4 &
Speichern und schließen Sie die Datei.
Erstellen eines Systemd-Dienstes
Der TigerVNC-Server wird nicht mit systemd-Serviceeinheiten ausgeliefert. Damit es beim Booten startet, müssen wir eine systemd-Diensteinheit erstellen.
sudo nano /etc/systemd/system/[email protected]
Fügen Sie die folgenden Zeilen in die Datei ein. Ersetzen Sie den Benutzernamen durch Ihren echten Benutzernamen.
[Unit] Description=a wrapper to launch an X server for VNC After=syslog.target network.target [Service] Type=forking User=username Group=username WorkingDirectory=/home/username 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
Speichern und schließen Sie die Datei. Beenden Sie die aktuelle VNC-Serverinstanz.
vncserver -kill :1
Starten Sie den VNC-Server mit systemd.
sudo systemctl start [email protected]
Autostart beim Booten aktivieren.
sudo systemctl enable [email protected]
Überprüfen Sie den Status:
systemctl status [email protected]
Wie Sie sehen können, ist es aktiv (wird ausgeführt).
Jetzt lauscht TigerVNC Server auf Port 5901.
sudo ss -lnpt | grep vnc
Schritt 6:Richten Sie einen Reverse-Proxy für die Guacamole-Webanwendung ein
Apache Tomcat lauscht auf Port 8080. Um auf einfache Weise auf die Guacamole-Webanwendung zuzugreifen, können wir einen Reverse-Proxy mit Apache oder Nginx einrichten, sodass Endbenutzer einen Domänennamen für den Zugriff auf die Webanwendung verwenden können. Außerdem können wir damit ganz einfach ein TLS-Zertifikat installieren, um die Verbindung zu verschlüsseln.
Apache
Wenn Sie Apache bevorzugen, installieren Sie Apache aus dem standardmäßigen Ubuntu-Software-Repository.
sudo apt install apache2
Um Apache als Reverse-Proxy zu verwenden, müssen wir den proxy
aktivieren Module und das Header-Modul.
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Erstellen Sie dann eine virtuelle Hostdatei für Guacamole.
sudo nano /etc/apache2/sites-available/guacamole.conf
Fügen Sie die folgenden Zeilen in die Datei ein. Ersetzen Sie guacamole.example.com
mit eigenem Domainnamen. Denken Sie daran, in Ihrem DNS-Manager einen A-Record für die Subdomain zu erstellen. Wenn Sie keinen echten Domainnamen haben, empfehle ich, zu NameCheap zu gehen, um einen zu kaufen. Der Preis ist niedrig und sie bieten Whois-Datenschutz lebenslang kostenlos.
<VirtualHost *:80> ServerName guacamole.example.com ErrorLog ${APACHE_LOG_DIR}/guacamole_error.log CustomLog ${APACHE_LOG_DIR}/guacamole_access.log combined <Location /> Require all granted ProxyPass http://localhost:8080/guacamole/ flushpackets=on ProxyPassReverse http://localhost:8080/guacamole/ </Location> <Location /websocket-tunnel> Require all granted ProxyPass ws://localhost:8080/guacamole/websocket-tunnel ProxyPassReverse ws://localhost:8080/guacamole/websocket-tunnel </Location> Header always unset X-Frame-Options </VirtualHost>
Speichern und schließen Sie die Datei. Testen Sie die Syntax.
sudo apachectl -t
Wenn Syntx OK ist, aktivieren Sie diesen virtuellen Host.
sudo a2ensite guacamole.conf
Starten Sie Apache neu
sudo systemctl restart apache2
Jetzt können Sie über guacamole.example.com
auf die Anmeldeseite von Apache Guacamole zugreifen . Wenn Sie die „ungültige Anfrage“ oder eine ähnliche Fehlermeldung sehen, könnte dies bedeuten, dass Apache Tomcat sich nicht an Port 8080 binden kann, da dieser Port bereits von einem anderen Prozess auf dem Server belegt ist. Sie sollten den anderen Prozess so konfigurieren, dass er einen anderen Port verwendet, und dann Tomcat neu starten.
Nginx
Wenn Sie Nginx bevorzugen, installieren Sie Nginx aus dem standardmäßigen Ubuntu-Software-Repository.
sudo apt install nginx
Erstellen Sie eine Serverblockdatei für Guacamole.
sudo nano /etc/nginx/conf.d/guacamole.conf
Fügen Sie die folgenden Zeilen in die Datei ein. Ersetzen Sie guacamole.example.com
mit eigenem Domainnamen. Denken Sie daran, in Ihrem DNS-Manager einen A-Record für die Subdomain zu erstellen. Wenn Sie keinen echten Domainnamen haben, empfehle ich, zu NameCheap zu gehen, um einen zu kaufen. Der Preis ist niedrig und sie bieten Whois-Datenschutz lebenslang kostenlos.
server { listen 80; listen [::]:80; server_name guacamole.example.com; access_log /var/log/nginx/guac_access.log; error_log /var/log/nginx/guac_error.log; location / { proxy_pass http://127.0.0.1:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_cookie_path /guacamole/ /; } }
Speichern und schließen Sie diese Datei. Testen Sie dann die Nginx-Konfiguration.
sudo nginx -t
Wenn der Test erfolgreich ist, laden Sie Nginx neu, damit die Änderung wirksam wird.
sudo systemctl reload nginx
Jetzt können Sie über guacamole.example.com
auf die Anmeldeseite von Apache Guacamole zugreifen . Wenn Sie die „ungültige Anfrage“ oder eine ähnliche Fehlermeldung sehen, könnte dies bedeuten, dass Apache Tomcat sich nicht an Port 8080 binden kann, da dieser Port bereits von einem anderen Prozess auf dem Server belegt ist. Sie sollten den anderen Prozess so konfigurieren, dass er einen anderen Port verwendet, und dann Tomcat neu starten.
HTTPS aktivieren
Um den HTTP-Verkehr zu verschlüsseln, wenn Sie die Guacamole-Weboberfläche besuchen, können wir HTTPS aktivieren, indem wir ein kostenloses TLS-Zertifikat installieren, das von Let’s Encrypt ausgestellt wurde. Führen Sie den folgenden Befehl aus, um den Let’s Encrypt-Client (certbot) auf Ubuntu 20.04 zu installieren.
sudo apt install certbot
Wenn Sie Apache verwenden, müssen Sie das Certbot-Apache-Plugin installieren.
sudo apt install python3-certbot-apache
Führen Sie als Nächstes den folgenden Befehl aus, um das TLS-Zertifikat zu erhalten und zu installieren.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Wenn Sie Nginx verwenden, müssen Sie auch das Certbot Nginx-Plugin installieren.
sudo apt install python3-certbot-nginx
Führen Sie als Nächstes den folgenden Befehl aus, um das TLS-Zertifikat zu erhalten und zu installieren.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Wo:
--nginx
:Verwenden Sie das nginx-Plugin.--apache
:Verwenden Sie das Apache-Plugin.--agree-tos
:Nutzungsbedingungen akzeptieren.--redirect
:HTTPS durch 301-Umleitung erzwingen.--hsts
:Fügen Sie jeder HTTP-Antwort den Strict-Transport-Security-Header hinzu. Erzwingen, dass der Browser immer TLS für die Domäne verwendet. Schützt vor SSL/TLS-Stripping.--staple-ocsp
:Aktiviert OCSP-Heften. Eine gültige OCSP-Antwort wird an das Zertifikat geheftet, das der Server während TLS anbietet.
Das Zertifikat sollte nun abgerufen und automatisch installiert werden.
Und Sie können über HTTPS auf die Guacamole-Weboberfläche zugreifen. (https://guacamole.example.com).
Nach der Anmeldung können Sie den Remote-Desktop verwenden.
Abschluss
Ich hoffe, dieses Tutorial hat Ihnen geholfen, den Apache Guacamole-Remote-Desktop auf dem Ubuntu 20.04-Server einzurichten. Wenn Sie diesen Beitrag nützlich fanden, abonnieren Sie wie immer unseren kostenlosen Newsletter, um weitere Tipps und Tricks zu erhalten. Pass auf dich auf 🙂