Questo tutorial ti mostrerà come configurare il desktop remoto Guacamole sul server Ubuntu 20.04. Guacamole è un gateway desktop remoto open source gratuito sviluppato da Apache Software Foundation.
Caratteristiche del guacamole
- Ti permette di accedere al tuo desktop remoto da un browser web. Non è necessario installare altro software sul lato client.
- Supporta protocolli standard come VNC, RDP, SSH e Kubernetes.
- Le sessioni VNC possono essere registrate graficamente.
- Single Sign-on con CAS, OpenID Connect o SAML 2.0
- Wake-on-LAN
- Gestisci facilmente più sessioni di desktop remoto.
- Supporta l'autenticazione a due fattori TOTP.
- Supporta gli appunti (copia e incolla) e il trasferimento di file tramite SFTP.
- Supporta input e output audio
- e altro.
Guacamole stesso non è un protocollo desktop remoto. È un proxy tra il desktop remoto e il client, quindi il desktop remoto può essere visualizzato e controllato in un browser web.
Passaggio 1:crea il server Guacamole dall'origine
Accedi al tuo server Ubuntu 20.04 e installa i pacchetti di dipendenze.
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
Scarica l'ultima versione stabile di guacamole-server.
wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz
Estrai l'archivio.
tar -xvf guacamole-server-1.2.0.tar.gz
Passa alla directory estratta.
cd guacamole-server-1.2.0
Configura l'ambiente di compilazione.
./configure --with-init-dir=/etc/init.d
Quindi compila guacamole-server.
sudo make
Installa il server guacamole.
sudo make install
Aggiorna la cache di sistema delle librerie installate.
sudo ldconfig
Ricarica systemd, in modo che possa trovare il guacd
(Demone proxy Guacamole) installato in /etc/init.d/
directory.
sudo systemctl daemon-reload
Avvia il guacd
servizio.
sudo systemctl start guacd
Abilita l'avvio automatico all'avvio.
sudo systemctl enable guacd
Controlla il suo stato.
systemctl status guacd
Come puoi vedere, è attivo (in esecuzione) .
Guacd è in ascolto su 127.0.0.1:4822
, come può essere mostrato con il ss
utilità.
sudo ss -lnpt | grep guacd
Fase 2:installa l'applicazione Web Guacamole
L'applicazione web Guacamole è scritta in Java, quindi è necessario installare un container Java Servlet come Apache Tomcat.
sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user
Apache Tomcat ascolterà sulla porta 8080, come mostrato con:
sudo ss -lnpt | grep java
Se hai altro software in ascolto sulla porta 8080, Tomcat non può collegarsi alla porta 8080. Devi configurare l'altro processo per utilizzare una porta diversa, quindi riavvia Tomcat (sudo systemctl restart tomcat9
).
Quindi, scarica l'applicazione web Guacamole.
wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war
Sposta il file nella directory dell'applicazione Web (/var/lib/tomcat9/webapps
) e contemporaneamente rinomina il file (cancella il numero di versione).
sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war
Riavvia Tomcat e guacd.
sudo systemctl restart tomcat9 guacd
Fase 3:Configura Guacamole
Crea una directory di configurazione per Guacamole.
sudo mkdir /etc/guacamole/
Crea un file di configurazione.
sudo nano /etc/guacamole/guacamole.properties
Aggiungi le seguenti righe in questo file. Alcune persone potrebbero dire che non è necessario aggiungere queste righe perché sono i valori predefiniti. Ti mostro una configurazione di base, così puoi personalizzarla quando se ne presenta la necessità.
# 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
Salva e chiudi il file. Il modulo di autenticazione predefinito in Guacamole legge nomi utente e password da un file XML:/etc/guacamole/user-mapping.xml
. Prima di creare questo file, dobbiamo generare un hash MD5 per la tua password con il seguente comando. Sostituisci your_password
con la tua password preferita.
echo -n your_password | openssl md5
Esempio di output:
(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517
Quindi, crea il file XML di mappatura utente.
sudo nano /etc/guacamole/user-mapping.xml
Aggiungi le seguenti righe. Qui specifichiamo che il backend utilizzerà il protocollo VNC (Vritual Network Computing). Sostituisci il nome utente e l'hash della password. Creeremo una password VNC in seguito.
<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>
Salva e chiudi il file. Riavvia Tomcat e guacd.
sudo systemctl restart tomcat9 guacd
Passaggio 4:installa un ambiente desktop sul server Ubuntu 20.04
Poiché stiamo per configurare un desktop remoto, abbiamo bisogno di un ambiente desktop. Assicurati che il tuo server abbia abbastanza RAM prima di installare un ambiente desktop. Esistono molti ambienti desktop. Ho scoperto che il leggero ambiente desktop XFCE funziona bene con VNC, quindi installalo con il seguente comando.
sudo apt install xfce4 xfce4-goodies firefox
Durante l'installazione, ti potrebbe essere chiesto di scegliere un display manager predefinito. Questa scelta non ha molta importanza, perché non vedrai la schermata di accesso in una sessione VNC.
Poiché sul server è in esecuzione un ambiente desktop, si consiglia vivamente di utilizzare un firewall come UFW per limitare l'accesso e aprire al pubblico solo le porte necessarie. Puoi leggere il seguente tutorial per imparare come abilitare e utilizzare UFW su Ubuntu.
- Come utilizzare UFW Firewall su Debian, Ubuntu, Linux Mint
Passaggio 5:installa un server VNC su Ubuntu 20.04 Server
Sono disponibili diversi software per server VNC per gli utenti Linux. Utilizzeremo il server TigerVNC perché funziona meglio con Guacamole.
sudo apt install tigervnc-standalone-server
Esegui il comando seguente per avviare il server VNC.
vncserver
Quando TigerVNC si avvia per la prima volta, ti chiede di impostare una password VNC. Si noti che la password non deve contenere più di 8 caratteri. Quindi puoi scegliere se hai bisogno di una password di sola visualizzazione.
Ora dovresti modificare il /etc/guacamole/user-mapping.xml
file e modificare la password VNC. Quindi riavvia Tomcat e guacd.
sudo systemctl restart tomcat9 guacd
Il vncserver
comando crea due file nella tua home directory.
- ~/.Xauthrirty
- ~/.vnc/xstartup
Il file xstartup specifica le applicazioni che verranno avviate dal server TigerVNC. Modifica questo file.
nano ~/.vnc/xstartup
Cambia
#!/bin/sh
a
#!/bin/bash
Perché Bash è la shell standard su Linux. Quindi commenta le righe seguenti. (Aggiungi un #
carattere all'inizio di ogni riga).
xsetroot -solid grey export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession
Quindi, aggiungi la seguente riga in basso, che farà sì che il server TigerVNC avvii l'ambiente desktop LXQT. Il startxfce4
binary è installato dalla xfce4-session
pacchetto.
startxfce4 &
Salva e chiudi il file.
Risoluzione dei problemi
Se il tuo server tigerVNC non ha creato il ~/.vnc/xstartup
file e il server VNC non sono riusciti come di seguito:
Quindi puoi creare manualmente il file.
nano ~/.vnc/xstartup
Aggiungi le seguenti righe nel file.
#!/bin/sh xrdb $HOME/.Xresources startxfce4 &
Salva e chiudi il file.
Creazione di un servizio Systemd
Il server TigerVNC non viene fornito con alcuna unità di servizio systemd. Per farlo partire all'avvio, dobbiamo creare un'unità di servizio systemd.
sudo nano /etc/systemd/system/[email protected]
Aggiungi le seguenti righe nel file. Sostituisci il nome utente con il tuo vero nome utente.
[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
Salva e chiudi il file. Arresta l'istanza del server VNC corrente.
vncserver -kill :1
Avvia il server VNC con systemd.
sudo systemctl start [email protected]
Abilita l'avvio automatico all'avvio.
sudo systemctl enable [email protected]
Controlla il suo stato:
systemctl status [email protected]
Come puoi vedere, è attivo (in esecuzione).
Ora il server TigerVNC è in ascolto sulla porta 5901.
sudo ss -lnpt | grep vnc
Passaggio 6:configurare un proxy inverso per l'applicazione Web Guacamole
Apache Tomcat è in ascolto sulla porta 8080. Per avere un modo semplice per accedere all'applicazione web Guacamole, possiamo configurare un proxy inverso con Apache o Nginx, così gli utenti finali potranno utilizzare un nome di dominio per accedere all'applicazione web. Ci consente inoltre di installare facilmente un certificato TLS per crittografare la connessione.
Apache
Se preferisci usare Apache, installa Apache dal repository del software Ubuntu predefinito.
sudo apt install apache2
Per utilizzare Apache come proxy inverso, dobbiamo abilitare il proxy
moduli e il modulo di intestazione.
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Quindi crea un file host virtuale per Guacamole.
sudo nano /etc/apache2/sites-available/guacamole.conf
Aggiungi le seguenti righe nel file. Sostituisci guacamole.example.com
con il tuo nome di dominio. Ricorda di creare un record A per il sottodominio nel tuo gestore DNS. Se non hai un vero nome di dominio, ti consiglio di andare su NameCheap per acquistarne uno. Il prezzo è basso e offrono protezione della privacy a chi è gratuita per tutta la vita.
<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>
Salva e chiudi il file. Verifica la sintassi.
sudo apachectl -t
Se Syntx è ok, abilita questo host virtuale.
sudo a2ensite guacamole.conf
Riavvia Apache
sudo systemctl restart apache2
Ora puoi accedere alla pagina di accesso di Apache Guacamole tramite guacamole.example.com
. Se vedi la "richiesta non valida" o un messaggio di errore simile, potrebbe significare che Apache Tomcat non può collegarsi alla porta 8080, perché questa porta è già occupata da un altro processo sul server. Dovresti configurare l'altro processo per utilizzare una porta diversa, quindi riavviare Tomcat.
Nginx
Se preferisci usare Nginx, installa Nginx dal repository del software Ubuntu predefinito.
sudo apt install nginx
Crea un file di blocco del server per Guacamole.
sudo nano /etc/nginx/conf.d/guacamole.conf
Aggiungi le seguenti righe nel file. Sostituisci guacamole.example.com
con il tuo nome di dominio. Ricorda di creare un record A per il sottodominio nel tuo gestore DNS. Se non hai un vero nome di dominio, ti consiglio di andare su NameCheap per acquistarne uno. Il prezzo è basso e offrono protezione della privacy a chi è gratuita per tutta la vita.
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/ /; } }
Salva e chiudi questo file. Quindi testa la configurazione di Nginx.
sudo nginx -t
Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.
sudo systemctl reload nginx
Ora puoi accedere alla pagina di accesso di Apache Guacamole tramite guacamole.example.com
. Se vedi la "richiesta non valida" o un messaggio di errore simile, potrebbe significare che Apache Tomcat non può collegarsi alla porta 8080, perché questa porta è già occupata da un altro processo sul server. Dovresti configurare l'altro processo per utilizzare una porta diversa, quindi riavviare Tomcat.
Abilita HTTPS
Per crittografare il traffico HTTP quando visiti l'interfaccia web di Guacamole, possiamo abilitare HTTPS installando un certificato TLS gratuito emesso da Let's Encrypt. Esegui il comando seguente per installare il client Let's Encrypt (certbot) su Ubuntu 20.04.
sudo apt install certbot
Se usi Apache, devi installare il plugin Certbot Apache.
sudo apt install python3-certbot-apache
Quindi, esegui il comando seguente per ottenere e installare il certificato TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Se usi Nginx, devi anche installare il plugin Certbot Nginx.
sudo apt install python3-certbot-nginx
Quindi, esegui il comando seguente per ottenere e installare il certificato TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Dove:
--nginx
:usa il plugin nginx.--apache
:usa il plugin Apache.--agree-tos
:Accetta i termini di servizio.--redirect
:Forza HTTPS tramite reindirizzamento 301.--hsts
:aggiungi l'intestazione Strict-Transport-Security a ogni risposta HTTP. Forzare il browser a utilizzare sempre TLS per il dominio. Difende dallo stripping SSL/TLS.--staple-ocsp
:Abilita la pinzatura OCSP. Una risposta OCSP valida viene pinzata al certificato offerto dal server durante TLS.
Il certificato dovrebbe ora essere ottenuto e installato automaticamente.
E puoi accedere all'interfaccia web di Guacamole tramite HTTPS. (https://guacamole.example.com).
Dopo aver effettuato l'accesso, potrai utilizzare il desktop remoto.
Preparazione
Spero che questo tutorial ti abbia aiutato a configurare il desktop remoto Apache Guacamole sul server Ubuntu 20.04. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere ulteriori suggerimenti e trucchi. Abbi cura di 🙂