GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Configurer le bureau à distance Apache Guacamole sur le serveur Ubuntu 20.04

Ce tutoriel vous montrera comment configurer le bureau à distance Guacamole sur le serveur Ubuntu 20.04. Guacamole est une passerelle de bureau à distance gratuite et open source développée par la fondation logicielle Apache.

Caractéristiques du guacamole

  • Il vous permet d'accéder à votre bureau à distance à partir d'un navigateur Web. Aucun autre logiciel ne doit être installé côté client.
  • Compatible avec les protocoles standards tels que VNC, RDP, SSH et Kubernetes.
  • Les sessions VNC peuvent être enregistrées graphiquement.
  • Authentification unique avec CAS, OpenID Connect ou SAML 2.0
  • Wake-on-LAN
  • Gérez facilement plusieurs sessions de bureau à distance.
  • Prend en charge l'authentification à deux facteurs TOTP.
  • Prend en charge le presse-papiers (copier-coller) et le transfert de fichiers via SFTP.
  • Prend en charge l'entrée et la sortie audio
  • et plus.

Guacamole lui-même n'est pas un protocole de bureau à distance. Il s'agit d'un proxy entre le poste de travail distant et le client, de sorte que le poste de travail distant peut être affiché et contrôlé dans un navigateur Web.

Étape 1 :Créer le serveur Guacamole à partir de la source

Connectez-vous à votre serveur Ubuntu 20.04 et installez les packages de dépendance.

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

Téléchargez la dernière version stable de guacamole-server.

wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz

Extraire l'archive.

tar -xvf guacamole-server-1.2.0.tar.gz

Accédez au répertoire extrait.

cd guacamole-server-1.2.0

Configurez l'environnement de construction.

./configure --with-init-dir=/etc/init.d

Puis compilez guacamole-server.

sudo make

Installez le serveur guacamole.

sudo make install

Mettez à jour le cache du système des bibliothèques installées.

sudo ldconfig

Rechargez systemd pour qu'il puisse trouver le guacd (démon proxy Guacamole) installé dans /etc/init.d/ répertoire.

sudo systemctl daemon-reload

Démarrer le guacd services.

sudo systemctl start guacd

Activer le démarrage automatique au démarrage.

sudo systemctl enable guacd

Vérifiez son statut.

systemctl status guacd

Comme vous pouvez le voir, il est actif (en cours d'exécution) .

Guacd écoute sur 127.0.0.1:4822 , comme on peut le montrer avec le ss utilitaire.

sudo ss -lnpt | grep guacd

Étape 2 :Installez l'application Web Guacamole

L'application Web Guacamole est écrite en Java, nous devons donc installer un conteneur Java Servlet comme Apache Tomcat.

sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user

Apache Tomcat écoutera sur le port 8080, comme cela peut être montré avec :

sudo ss -lnpt | grep java

Si vous avez un autre logiciel qui écoute sur le port 8080, alors Tomcat ne peut pas se lier au port 8080. Vous devez configurer l'autre processus pour utiliser un port différent, puis redémarrer Tomcat (sudo systemctl restart tomcat9 ).

Ensuite, téléchargez l'application Web Guacamole.

wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war

Déplacez le fichier dans le répertoire de l'application Web (/var/lib/tomcat9/webapps ) et renommer le fichier en même temps (supprimer le numéro de version).

sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war

Redémarrez Tomcat et guacd.

sudo systemctl restart tomcat9 guacd

Étape 3 :Configurer Guacamole

Créez un répertoire de configuration pour Guacamole.

sudo mkdir /etc/guacamole/

Créez un fichier de configuration.

sudo nano /etc/guacamole/guacamole.properties

Ajoutez les lignes suivantes dans ce fichier. Certaines personnes pourraient dire que vous n'avez pas besoin d'ajouter ces lignes car ce sont les valeurs par défaut. Je vous montre une configuration de base, afin que vous puissiez la personnaliser en cas de besoin.

# 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

Enregistrez et fermez le fichier. Le module d'authentification par défaut de Guacamole lit les noms d'utilisateur et les mots de passe à partir d'un fichier XML :/etc/guacamole/user-mapping.xml . Avant de créer ce fichier, nous devons générer un hachage MD5 pour votre mot de passe avec la commande suivante. Remplacez your_password avec votre mot de passe préféré.

echo -n your_password | openssl md5

Exemple de sortie :

(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517

Ensuite, créez le fichier XML de mappage utilisateur.

sudo nano /etc/guacamole/user-mapping.xml

Ajoutez les lignes suivantes. Ici, nous précisons que le backend utilisera le protocole VNC (Virtual Network Computing). Remplacez le nom d'utilisateur et le hachage du mot de passe. Nous créerons un mot de passe VNC plus tard.

<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>

Enregistrez et fermez le fichier. Redémarrez Tomcat et guacd.

sudo systemctl restart tomcat9 guacd

Étape 4 :Installer un environnement de bureau sur le serveur Ubuntu 20.04

Puisque nous allons configurer un bureau à distance, nous avons besoin d'un environnement de bureau. Assurez-vous que votre serveur dispose de suffisamment de RAM avant d'installer un environnement de bureau. Il existe de nombreux environnements de bureau. J'ai trouvé que l'environnement de bureau léger XFCE fonctionne bien avec VNC, alors installez-le avec la commande suivante.

sudo apt install xfce4 xfce4-goodies firefox

Lors de l'installation, il peut vous être demandé de choisir un gestionnaire d'affichage par défaut. Ce choix n'a pas beaucoup d'importance, car vous ne verrez pas l'écran de connexion dans une session VNC.

Puisqu'un environnement de bureau s'exécute sur le serveur, il est fortement recommandé d'utiliser un pare-feu comme UFW pour restreindre l'accès et n'ouvrir que les ports nécessaires au public. Vous pouvez lire le didacticiel suivant pour savoir comment activer et utiliser UFW sur Ubuntu.

  • Comment utiliser le pare-feu UFW sur Debian, Ubuntu, Linux Mint

Étape 5 :Installer un serveur VNC sur le serveur Ubuntu 20.04

Il existe plusieurs logiciels de serveur VNC disponibles pour les utilisateurs de Linux. Nous allons utiliser le serveur TigerVNC car il fonctionne mieux avec Guacamole.

sudo apt install tigervnc-standalone-server

Exécutez la commande suivante pour démarrer le serveur VNC.

vncserver

Lorsque TigerVNC démarre pour la première fois, il vous demande de définir un mot de passe VNC. Notez que le mot de passe ne doit pas comporter plus de 8 caractères. Ensuite, vous pouvez choisir si vous avez besoin d'un mot de passe en lecture seule.

Maintenant, vous devez éditer le /etc/guacamole/user-mapping.xml fichier et modifiez le mot de passe VNC. Redémarrez ensuite Tomcat et guacd.

sudo systemctl restart tomcat9 guacd

Le vncserver La commande crée deux fichiers sous votre répertoire personnel.

  • ~/.Xauthrirty
  • ~/.vnc/xstartup

Le fichier xstartup spécifie les applications qui seront démarrées par le serveur TigerVNC. Modifiez ce fichier.

nano ~/.vnc/xstartup

Modifier

#!/bin/sh

à

#!/bin/bash

Parce que Bash est le Shell standard sous Linux. Commentez ensuite les lignes suivantes. (Ajouter un # caractère au début de chaque ligne).

xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession

Ensuite, ajoutez la ligne suivante en bas, ce qui fera que le serveur TigerVNC démarrera l'environnement de bureau LXQT. Le startxfce4 le binaire est installé par la xfce4-session paquet.

startxfce4 &

Enregistrez et fermez le fichier.

Dépannage

Si votre serveur tigerVNC n'a pas créé le ~/.vnc/xstartup fichier et le serveur VNC a échoué comme ci-dessous :

Ensuite, vous pouvez créer manuellement le fichier.

nano ~/.vnc/xstartup

Ajoutez les lignes suivantes dans le fichier.

#!/bin/sh

xrdb $HOME/.Xresources
startxfce4 &

Enregistrez et fermez le fichier.

Créer un service Systemd

Le serveur TigerVNC n'est livré avec aucune unité de service systemd. Pour le faire démarrer au démarrage, nous devons créer une unité de service systemd.

sudo nano /etc/systemd/system/[email protected]

Ajoutez les lignes suivantes dans le fichier. Remplacez nom d'utilisateur par votre vrai nom d'utilisateur.

[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

Enregistrez et fermez le fichier. Arrêtez l'instance actuelle du serveur VNC.

vncserver -kill :1

Démarrez le serveur VNC avec systemd.

sudo systemctl start [email protected]

Activer le démarrage automatique au démarrage.

sudo systemctl enable [email protected]

Vérifiez son état :

systemctl status [email protected]

Comme vous pouvez le voir, il est actif (en cours d'exécution).

Maintenant TigerVNC Server écoute sur le port 5901.

sudo ss -lnpt | grep vnc

Étape 6 :Configurer un proxy inverse pour l'application Web Guacamole

Apache Tomcat écoute sur le port 8080. Pour accéder facilement à l'application Web Guacamole, nous pouvons configurer un proxy inverse avec Apache ou Nginx, afin que les utilisateurs finaux puissent utiliser un nom de domaine pour accéder à l'application Web. Cela nous permet également d'installer facilement un certificat TLS pour chiffrer la connexion.

Apache

Si vous préférez utiliser Apache, installez Apache à partir du référentiel de logiciels Ubuntu par défaut.

sudo apt install apache2

Pour utiliser Apache comme proxy inverse, nous devons activer le proxy modules et le module d'en-tête.

sudo a2enmod proxy proxy_http headers proxy_wstunnel

Créez ensuite un fichier d'hôte virtuel pour Guacamole.

sudo nano /etc/apache2/sites-available/guacamole.conf

Ajoutez les lignes suivantes dans le fichier. Remplacez guacamole.example.com avec votre propre nom de domaine. Pensez à créer un enregistrement A pour le sous-domaine dans votre gestionnaire DNS. Si vous n'avez pas de vrai nom de domaine, je vous recommande d'aller sur NameCheap pour en acheter un. Le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.

<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>

Enregistrez et fermez le fichier. Testez la syntaxe.

sudo apachectl -t

Si Syntx est Ok, alors activez cet hôte virtuel.

sudo a2ensite guacamole.conf

Redémarrez Apache

sudo systemctl restart apache2

Vous pouvez maintenant accéder à la page de connexion Apache Guacamole via guacamole.example.com . Si vous voyez la "requête invalide" ou un message d'erreur similaire, cela peut signifier qu'Apache Tomcat ne peut pas se lier au port 8080, car ce port est déjà pris par un autre processus sur le serveur. Vous devez configurer l'autre processus pour utiliser un port différent, puis redémarrer Tomcat.

Nginx

Si vous préférez utiliser Nginx, installez Nginx à partir du référentiel de logiciels Ubuntu par défaut.

sudo apt install nginx

Créez un fichier de bloc de serveur pour Guacamole.

sudo nano /etc/nginx/conf.d/guacamole.conf

Ajoutez les lignes suivantes dans le fichier. Remplacez guacamole.example.com avec votre propre nom de domaine. Pensez à créer un enregistrement A pour le sous-domaine dans votre gestionnaire DNS. Si vous n'avez pas de vrai nom de domaine, je vous recommande d'aller sur NameCheap pour en acheter un. Le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.

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/ /;
        }

}

Enregistrez et fermez ce fichier. Testez ensuite la configuration de Nginx.

sudo nginx -t

Si le test réussit, rechargez Nginx pour que la modification prenne effet.

sudo systemctl reload nginx

Vous pouvez maintenant accéder à la page de connexion Apache Guacamole via guacamole.example.com . Si vous voyez la "requête invalide" ou un message d'erreur similaire, cela peut signifier qu'Apache Tomcat ne peut pas se lier au port 8080, car ce port est déjà pris par un autre processus sur le serveur. Vous devez configurer l'autre processus pour utiliser un port différent, puis redémarrer Tomcat.

Activer HTTPS

Pour chiffrer le trafic HTTP lorsque vous visitez l'interface Web Guacamole, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let's Encrypt. Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur Ubuntu 20.04.

sudo apt install certbot

Si vous utilisez Apache, vous devez installer le plugin Certbot Apache.

sudo apt install python3-certbot-apache

Ensuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com

Si vous utilisez Nginx, vous devez également installer le plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

Ensuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com

Où :

  • --nginx  :Utilisez le plug-in nginx.
  • --apache :Utilisez le plug-in Apache.
  • --agree-tos  :acceptez les conditions d'utilisation.
  • --redirect  :Forcer HTTPS par redirection 301.
  • --hsts :Ajoutez l'en-tête Strict-Transport-Security à chaque réponse HTTP. Forcer le navigateur à toujours utiliser TLS pour le domaine. Protège contre le SSL/TLS Stripping.
  • --staple-ocsp :active l'agrafage OCSP. Une réponse OCSP valide est agrafée au certificat que le serveur propose pendant TLS.

Le certificat devrait maintenant être obtenu et installé automatiquement.

Et vous pouvez accéder à l'interface Web de Guacamole via HTTPS. (https://guacamole.example.com).

Une fois connecté, vous pourrez utiliser le bureau à distance.

Conclusion

J'espère que ce tutoriel vous a aidé à configurer le bureau à distance Apache Guacamole sur le serveur Ubuntu 20.04. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de trucs et astuces. Prenez soin de vous 🙂


Ubuntu
  1. Comment démarrer, arrêter ou redémarrer le serveur Apache sur Ubuntu

  2. Comment installer le bureau à distance (Xrdp) sur Ubuntu 18.04

  3. Bureau à distance Ubuntu :comment le configurer et s'y connecter

  4. Comment installer Xrdp (Remote Desktop) sur Ubuntu 20.04 LTS

  5. Convertir Ubuntu Desktop 14.04 en serveur ?

Comment configurer Quad 9 DNS sur Ubuntu 16.04 et Ubuntu 17.10 Desktop

Comment installer LAMP Stack sur le serveur/bureau Ubuntu 18.04

Comment installer LAMP Stack sur le serveur/bureau Ubuntu 20.04

Comment configurer le bureau à distance sur Ubuntu (Xrdp)

Comment installer Apache Guacamole sur Ubuntu 20.04 LTS

Comment installer le serveur Xrdp (bureau à distance) sur Ubuntu 22.04