de web-gebaseerde Guacamole Remote Desktop Client te installeren op Ubuntu 20.04 LTS

Guacamole is een gratis, open-source en web-gebaseerd remote desktop control panel dat gebruikt wordt om Linux en Windows systemen vanuit de web browser te beheren. Het ondersteunt standaard protocollen als VNC, RDP, SSH en Kubernetes, en je hoeft geen software op de cliënt-computer te installeren. Het ondersteunt klembord, bestandsoverdracht via SFTP en stelt je in staat om meerdere remote desktop sessies te beheren.

In deze zelfstudie laten we je zien hoe je Guacamole remote desktop client installeert en configureert op Ubuntu 20.04 server.

Vereisten

  • Een server met Ubuntu 20.04 met minimaal 2 GB RAM.
  • Een root wachtwoord is geconfigureerd de server.

Aan de slag

Eerst moet je je systeem bijwerken naar de laatste stabiele versie. Je kunt dit doen door alle systeempakketten bij te werken met het volgende commando:

apt-get update -y

Zodra je systeem bijgewerkt is, herstart je je systeem om de veranderingen toe te passen.

Installeer de vereiste afhankelijkheden

Eerst zul je enkele afhankelijkheden in je server moeten installeren om Guacamole vanaf broncode te kunnen compileren. Je kunt ze allemaal installeren met het volgende commando:

apt-get install make gcc g++ libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev libssl-dev libvorbis-dev libwebp-dev -y

Als alle afhankelijkheden geïnstalleerd zijn, kun je verder gaan met de volgende stap.

Installeer Tomcat Server

Guacamole gebruikt Tomcat om guacamole client inhoud te serveren aan gebruikers die via de web browser verbinding maken met de guacamole server. De Tomcat server moet dus op je server geïnstalleerd zijn. Als het niet geïnstalleerd is kun je het installeren met het volgende commando:

apt-get install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y

Na de installatie van de Tomcat server start je de Tomcat service en schakel je hem in om te starten bij het herstarten van het systeem met het volgende commando:

systemctl start tomcat9
systemctl enable tomcat9

Je kunt ook de status van de Tomcat dienst controleren met het volgende commando:

systemctl status tomcat9

Je zou de volgende uitvoer moeten krijgen:

? tomcat9.service - Apache Tomcat 9 Web Application Server
     Loaded: loaded (/lib/systemd/system/tomcat9.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-08-25 14:48:50 UTC; 29min ago
       Docs: https://tomcat.apache.org/tomcat-9.0-doc/index.html
    Process: 27982 ExecStartPre=/usr/libexec/tomcat9/tomcat-update-policy.sh (code=exited, status=0/SUCCESS)
   Main PID: 27990 (java)
      Tasks: 38 (limit: 4691)
     Memory: 241.5M
     CGroup: /system.slice/tomcat9.service
             ??27990 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/var/lib/tomcat9/conf/logging.properties -Djava.util.l>

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer Guacamole

Standaard is het Guacamole pakket niet beschikbaar in de Ubuntu 20.04 standaard repository. Je zult het dus vanaf de broncode moeten compileren.

Download eerst de nieuwste versie van Guacamole van de Apache website met het volgende commando:

wget https://downloads.apache.org/guacamole/1.1.0/source/guacamole-server-1.1.0.tar.gz

Als de download voltooid is, pak je het gedownloade bestand uit met het volgende commando:

tar -xvzf guacamole-server-1.1.0.tar.gz

Verander vervolgens de directory in de uitgepakte directory en voer het configure script uit om te controleren of een vereiste afhankelijkheid ontbreekt of niet:

cd guacamole-server-1.1.0
./configure --with-init-dir=/etc/init.d

Als alles in orde is, zou je de volgende uitvoer moeten zien:

     freerdp2 ............ yes
     pango ............... yes
     libavcodec .......... yes
     libavutil ........... yes
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... yes
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ no
     libwebsockets ....... no
     libwebp ............. yes
     wsock32 ............. no

   Protocol support:

      Kubernetes .... no
      RDP ........... yes
      SSH ........... yes
      Telnet ........ yes
      VNC ........... yes

   Services / tools:

      guacd ...... yes
      guacenc .... yes
      guaclog .... yes

   FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
   Init scripts: /etc/init.d
   Systemd units: no

Type "make" to compile guacamole-server.

Compileer en installeer nu Guacamole Server door het volgende commando uit te voeren:

make
make install

Voer vervolgens het volgende commando uit om de cache van geïnstalleerde bibliotheken van je systeem bij te werken:

ldconfig

Schakel vervolgens de Guacamole dienst in en start hem met het volgende commando

systemctl enable guacd
systemctl start guacd

Je kunt nu de status van de Guacamole dienst controleren met het volgende commando:

systemctl status guacd

Je zou de volgende uitvoer moeten krijgen:

? guacd.service - LSB: Guacamole proxy daemon
     Loaded: loaded (/etc/init.d/guacd; generated)
     Active: active (running) since Tue 2020-08-25 12:02:26 UTC; 4s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 27536 ExecStart=/etc/init.d/guacd start (code=exited, status=0/SUCCESS)
      Tasks: 1 (limit: 4691)
     Memory: 10.1M
     CGroup: /system.slice/guacd.service
             ??27555 /usr/local/sbin/guacd -p /var/run/guacd.pid

Aug 25 12:02:26 ubuntu2004 systemd[1]: Starting LSB: Guacamole proxy daemon...
Aug 25 12:02:26 ubuntu2004 guacd[27551]: Guacamole proxy daemon (guacd) version 1.1.0 started
Aug 25 12:02:26 ubuntu2004 guacd[27536]: Starting guacd:
Aug 25 12:02:26 ubuntu2004 guacd[27551]: Starting guacd:
Aug 25 12:02:26 ubuntu2004 guacd[27551]: uacd[27551]: INFO:        Guacamole proxy daemon (guacd) versio
Aug 25 12:02:26 ubuntu2004 systemd[1]: Started LSB: Guacamole proxy daemon.
Aug 25 12:02:26 ubuntu2004 guacd[27555]: Listening on host 127.0.0.1, port 4822
Aug 25 12:02:26 ubuntu2004 guacd[27536]: uacd[275

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer Guacamole Client

Vervolgens moet je Guacamole client op je server installeren. Guacamole client is geschreven in Java en is cross-platform. Dit zal de uiteindelijke HTML5 toepassing vormen die je gepresenteerd krijgt.

Download eerst de Guacamole binary met het volgende commando:

wget https://mirrors.estointernet.in/apache/guacamole/1.1.0/binary/guacamole-1.1.0.war

Na het downloaden van de Guacamole binary kopieer je hem naar de /etc/guacamole directory met het volgende commando:

mkdir /etc/guacamole
mv guacamole-1.1.0.war /etc/guacamole/guacamole.war

Maak vervolgens een symbolische link van de guacamole client naar de Tomcat webapps directory met het volgende commando:

ln -s /etc/guacamole/guacamole.war /var/lib/tomcat9/webapps/

Herstart tenslotte de Tomcat en Guacamole dienst om de nieuwe webapplicatie in te zetten:

systemctl restart tomcat9
systemctl restart guacd

Als je klaar bent, kun je verder gaan met de volgende stap.

Configureer Guacomole

Vervolgens moet je gebruikers en verbindingen instellen om Guacamole goed te laten werken.

Maak eerst een Guacamole hoofdconfiguratiebestand aan met de naam guacamole.properties.

nano /etc/guacamole/guacamole.properties

Voeg de volgende regels toe:

guacd-hostname: localhost
guacd-port:    4822
user-mapping:    /etc/guacamole/user-mapping.xml

Sla het bestand op en sluit het als je klaar bent.

Vervolgens moet je directories aanmaken voor bibliotheek en uitbreiding. Je kunt ze aanmaken met het volgende commando:

mkdir /etc/guacamole/{extensions,lib}

Stel vervolgens de omgevingsvariabele guacamole home directory in en voeg die toe aan het configuratiebestand /etc/default/tomcat9.

echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat9

Vervolgens moet je een bestand maken met de naam user-mapping.xml om de gebruiker te definiëren die toegang mag krijgen tot Guacamole web UI.

Genereer, voordat je het aanmaakt, md5 hash voor het wachtwoord met het volgende commando:

echo -n yoursecurepassword | openssl md5

Je zou de volgende uitvoer moeten zien:

(stdin)= 55b38b03e7587a45fd886977842ff9b8

Opmerking: Onthoud het bovenstaande md5 wachtwoord. Je zult dit moeten definiëren in het user-mapping.xml bestand.

Maak vervolgens een nieuw user-mapping.xml met het volgende commando:

nano /etc/guacamole/user-mapping.xml
<user-mapping>
    <authorize 
            username="admin"
            password="55b38b03e7587a45fd886977842ff9b8"
            encoding="md5">

        <connection name="Ubuntu20.04-Server">
            <protocol>ssh</protocol>
            <param name="hostname">192.168.10.50</param>
            <param name="port">22</param>
            <param name="username">root</param>
        </connection>
        <connection name="Windows Server">
            <protocol>rdp</protocol>
            <param name="hostname">192.168.10.51</param>
            <param name="port">3389</param>
        </connection>
    </authorize>
</user-mapping>

Sla het bestand op en sluit het als je klaar bent.

Waar:

  • 192.168.10.50 is het IP adres van de externe Ubuntu server.
  • 192.168.10.51 is het IP adres van de verwijderde Windows server.

Herstart vervolgens Tomcat en de Guacamole dienst om de veranderingen toe te passen:

systemctl restart tomcat9
systemctl restart guacd

Op dit punt zijn de Guacamole server en client geïnstalleerd en geconfigureerd.

Toegang tot de Guacamole Web Interface

Open nu je web browser en ga naar de Guacamole web interface met de URL http://your-server-ip:8080/guacamole. Je wordt doorverwezen naar de Guacamole login pagina:

Guacamole login

Geef de gebruikersnaam en het wachtwoord op die je in het user-mapping.xml bestand gedefinieerd hebt, en klik op de knop Login. Je zou het Guacamole dashboard moeten zien op de volgende pagina:

Guacamole dashboard

Klik nu op de Ubuntu20.04-Server om de remote server te verbinden met het SSH protocol. Je zou het inlogscherm van de Ubuntu server moeten zien zoals hieronder:

Inloggen op afstand met Guacamole

Geef het root wachtwoord van je Ubuntu server op en druk op Enter. Je logt nu in op de Ubuntu server zoals hieronder:

Schelpenlogin via guacamole

Configureer Nginx voor Guacamole

Het is aan te bevelen Nginx als een omgekeerde proxy in te stellen om Guacamole via poort 80 te benaderen.

Installeer eerst de Nginx webserver met het volgende commando:

apt-get install nginx -y

Maak na de installatie van Nginx een nieuw Nginx virtual host configuratiebestand:

nano /etc/nginx/sites-available/guacamole.conf

Voeg de volgende regels toe:

server {
        listen 80;
        server_name your-server-ip;
        access_log  /var/log/nginx/guac_access.log;
        error_log  /var/log/nginx/guac_error.log;

        location / {
                    proxy_pass http://your-server-ip: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/ /;
        }

}

Sla het bestand op en sluit het als je klaar bent. Schakel dan de Nginx virtuele host in met het volgende commando:

ln -s /etc/nginx/sites-available/guacamole.conf /etc/nginx/sites-enabled/

Herstart vervolgens de Nginx dienst om de configuratiewijzigingen toe te passen:

systemctl restart nginx

Nu kun je je Guacamole benaderen met de URL http://your-server-ip.

Conclusie

Gefeliciteerd! Je hebt Guacamole remote desktop client met succes geïnstalleerd en ingesteld op Ubuntu 20.04 server. Je kunt nu meer RDP of VNC verbindingen aan je Guacamole toevoegen en ze gaan beheren vanuit de web-gebaseerde interface.