Cómo instalar el cliente de escritorio remoto Guacamole basado en la web en Ubuntu 20.04 LTS

Guacamole es un panel de control de escritorio remoto gratuito, de código abierto y basado en la web, que sirve para gestionar sistemas Linux y Windows desde el navegador web. Soporta protocolos estándar como VNC, RDP, SSH y Kubernetes, y no necesitas instalar ningún software en el ordenador cliente. Soporta el portapapeles, la transferencia de archivos a través de SFTP y te permite gestionar múltiples sesiones de escritorio remoto.

En este tutorial, te mostraremos cómo instalar y configurar el cliente de escritorio remoto Guacamole en un servidor Ubuntu 20.04.

Requisitos previos

  • Un servidor que ejecute Ubuntu 20.04 con un mínimo de 2GB de RAM.
  • Una contraseña de root configurada el servidor.

Cómo empezar

En primer lugar, tendrás que actualizar tu sistema a la última versión estable. Puedes hacerlo actualizando todos los paquetes del sistema mediante el siguiente comando:

apt-get update -y

Una vez actualizado tu sistema, reinicia tu sistema para aplicar los cambios.

Instalar las dependencias necesarias

En primer lugar, necesitarás instalar algunas dependencias en tu servidor para compilar el Guacamole desde el código fuente. Puedes instalarlas todas con el siguiente comando:

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

Una vez instaladas todas las dependencias, puedes pasar al siguiente paso.

Instalar el servidor Tomcat

Guacamole utiliza Tomcat para servir el contenido del cliente de Guacamole a los usuarios que se conectan al servidor de Guacamole a través del navegador web. Por tanto, el servidor Tomcat debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo con el siguiente comando:

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

Después de instalar el servidor Tomcat, inicia el servicio Tomcat y permite que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start tomcat9
systemctl enable tomcat9

También puedes verificar el estado del servicio Tomcat con el siguiente comando:

systemctl status tomcat9

Deberías obtener la siguiente salida:

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

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Guacamole

Por defecto, el paquete Guacamole no está disponible en el repositorio por defecto de Ubuntu 20.04. Así que tendrás que compilarlo desde el código fuente.

En primer lugar, descarga la última versión de Guacamole del sitio web de Apache mediante el siguiente comando:

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

Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:

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

A continuación, cambia el directorio al extraído y ejecuta el script de configuración para comprobar si falta alguna dependencia necesaria o no:

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

Si todo está bien, deberías ver la siguiente salida:

     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.

Ahora, compila e instala Guacamole Server ejecutando el siguiente comando:

make
make install

A continuación, ejecuta el siguiente comando para actualizar la caché de bibliotecas instaladas de tu sistema:

ldconfig

A continuación, habilita e inicia el servicio Guacamole con el siguiente comando

systemctl enable guacd
systemctl start guacd

Ahora puedes comprobar el estado del servicio Guacamole con el siguiente comando:

systemctl status guacd

Deberías obtener la siguiente salida:

? 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

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar el cliente Guacamole

A continuación, tendrás que instalar el cliente Guacamole en tu servidor. El cliente Guacamole está escrito en Java y es multiplataforma. Esto conformará la aplicación HTML5 final que se te presentará.

En primer lugar, descarga el binario de Guacamole mediante el siguiente comando:

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

Después de descargar el binario de Guacamole, cópialo en el directorio /etc/guacamole utilizando el siguiente comando:

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

A continuación, crea un enlace simbólico del cliente guacamole al directorio webapps de Tomcat con el siguiente comando:

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

Por último, reinicia el servicio Tomcat y Guacamole para desplegar la nueva aplicación web:

systemctl restart tomcat9
systemctl restart guacd

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Guacomole

A continuación, debes configurar los usuarios y las conexiones para que Guacamole funcione correctamente.

Primero, crea un archivo de configuración principal de Guacamole llamado guacamole.properties.

nano /etc/guacamole/guacamole.properties

Añade las siguientes líneas:

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

Guarda y cierra el archivo cuando hayas terminado.

A continuación, tendrás que crear directorios para la biblioteca y la extensión. Puedes crearlos con el siguiente comando:

mkdir /etc/guacamole/{extensions,lib}

A continuación, establece la variable de entorno del directorio principal de guacamole y añádela al archivo de configuración /etc/default/tomcat9.

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

A continuación, tendrás que crear un archivo llamado user-mapping.xml para definir el usuario que puede acceder a la interfaz web de Guacamole.

Antes de crearlo, genera un hash md5 para la contraseña con el siguiente comando:

echo -n yoursecurepassword | openssl md5

Deberías ver la siguiente salida:

(stdin)= 55b38b03e7587a45fd886977842ff9b8

Nota: Recuerda la contraseña md5 anterior. Tendrás que definirla en el archivo user-mapping.xml.

A continuación, crea un nuevo user-mapping.xml con el siguiente comando

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>

Guarda y cierra el archivo cuando hayas terminado.

Donde:

  • 192.168.10. 50 es la dirección IP del servidor remoto de Ubuntu.
  • 192.168.10. 51 es la dirección IP del servidor Windows remoto.

A continuación, reinicia el servicio Tomcat y Guacamole para aplicar los cambios:

systemctl restart tomcat9
systemctl restart guacd

En este punto, el servidor y el cliente de Guacamole han sido instalados y configurados.

Accede a la interfaz web de Guacamole

Ahora, abre tu navegador web y accede a la interfaz web de Guacamole utilizando la URL http://your-server-ip:8080/guacamole. Se te redirigirá a la página de inicio de sesión de Guacamole:

Ingreso de guacamole

Proporciona el nombre de usuario y la contraseña que definiste en el archivo user-mapping.xml, y haz clic en el botón Login. Deberías ver el panel de control de Guacamole en la siguiente página:

Tablero de guacamole

Ahora, haz clic en el Servidor Ubuntu20.04 para conectarte al servidor remoto mediante el protocolo SSH. Deberías ver la pantalla de inicio de sesión del servidor Ubuntu como se muestra a continuación:

Inicio de sesión remoto de Guacamole

Proporciona la contraseña de root de tu servidor Ubuntu y pulsa Intro. Se iniciará la sesión en el servidor Ubuntu como se muestra a continuación:

Inicio de sesión en la concha a través del guacamole

Configurar Nginx para Guacamole

Se recomienda configurar Nginx como proxy inverso para acceder a Guacamole a través del puerto 80.

En primer lugar, instala el servidor web Nginx con el siguiente comando:

apt-get install nginx -y

Después de instalar Nginx, crea un nuevo archivo de configuración del host virtual Nginx:

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

Añade las siguientes líneas:

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

}

Guarda y cierra el archivo cuando hayas terminado. A continuación, habilita el host virtual Nginx con el siguiente comando:

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

A continuación, reinicia el servicio Nginx para aplicar los cambios de configuración:

systemctl restart nginx

Ahora, puedes acceder a tu Guacamole utilizando la URL http://your-server-ip.

Conclusión

Enhorabuena! has instalado y configurado con éxito el cliente de escritorio remoto Guacamole en el servidor Ubuntu 20.04. Ahora puedes añadir más conexiones RDP o VNC a tu Guacamole y empezar a gestionarlas desde la interfaz basada en la web.

También te podría gustar...