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

Si eres administrador de sistemas y responsable de la gestión de máquinas Windows y Linux, es posible que a menudo necesites un software de cliente de escritorio remoto para gestionarlas. Apache Guacamole es una aplicación de escritorio remoto gratuita, de código abierto y basada en la web que te permite acceder a tus máquinas de escritorio a través de un navegador web. Es una aplicación web HTML5 sin cliente que soporta protocolos estándar como VNC, RDP y SSH. No necesitas instalar ni software cliente ni plugins en el servidor. Con Guacamole, puedes cambiar fácilmente entre varias máquinas de escritorio remoto con la misma ventana del navegador.

En este tutorial, mostraremos cómo instalar la pasarela de escritorio remoto Apache Guacamole en el servidor Ubuntu 18.04 LTS.

Requisitos previos

  • Un servidor con Ubuntu 18.04.
  • Una contraseña de root configurada en tu servidor.

Cómo empezar

Antes de empezar, es una buena idea actualizar los paquetes de tu sistema a la última versión. Puedes actualizarlos con el siguiente comando:

apt-get update -y
apt-get upgrade -y

Una vez actualizados todos los paquetes, reinicia tu sistema para aplicar los cambios.

Instalar las dependencias necesarias

Antes de empezar, necesitarás instalar algunas dependencias en tu sistema para compilar Guacamole desde el código fuente. Puedes instalarlas todas con el siguiente comando:

apt-get install gcc-6 g++-6 libossp-uuid-dev libavcodec-dev libpango1.0-dev libssh2-1-dev libcairo2-dev libjpeg-turbo8-dev libpng-dev libavutil-dev libswscale-dev libfreerdp-dev libvncserver-dev libssl-dev libvorbis-dev libwebp-dev -y

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Instalar el servidor Tomcat

A continuación, tendrás que instalar Tomcat en tu servidor para servir el contenido del cliente de Guacamole a los usuarios que se conecten al servidor de Guacamole a través del navegador web. Puedes instalarlo con el siguiente comando:

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

Una vez instalado el Tomcat, puedes pasar al siguiente paso.

Instalar el servidor de Guacamole

Guacamole se divide en dos componentes, guacamole-servidor, que proporciona el proxy guacd y las bibliotecas relacionadas, y guacamole-cliente, que proporciona el cliente que será servido por tu servidor Tomcat. Por defecto, Guacamole Server no está disponible en el repositorio por defecto de Ubuntu 18.04. Así que tendrás que construirlo desde el código fuente.

En primer lugar, descarga la última versión del código fuente de Guacamole mediante el siguiente comando:

wget http://apachemirror.wuchna.com/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 configúralo con el siguiente comando:

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

Una vez que la configuración se haya realizado con éxito, deberías obtener la siguiente salida:

   Library status:

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

   Protocol support:

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

   Services / tools:

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

   FreeRDP plugins: no
   Init scripts: /etc/init.d
   Systemd units: no

Type "make" to compile guacamole-server.

A continuación, ejecuta el siguiente comando para compilar guacamole-server:

make

Una vez completada la compilación con éxito, puedes instalarlo con el siguiente comando:

make install

Una vez instalado, ejecuta el siguiente comando para actualizar la caché de bibliotecas instaladas de tu sistema

ldconfig

A continuación, habilita el servicio Guacamole para que se inicie en el arranque y ponlo en marcha con el siguiente comando:

systemctl enable guacd
systemctl start guacd

También 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 Sat 2020-04-11 14:48:03 UTC; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 28833 ExecStart=/etc/init.d/guacd start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 2359)
   CGroup: /system.slice/guacd.service
           ??28847 /usr/local/sbin/guacd -p /var/run/guacd.pid

Apr 11 14:48:03 ubuntu1804 systemd[1]: Starting LSB: Guacamole proxy daemon...
Apr 11 14:48:03 ubuntu1804 guacd[28834]: Guacamole proxy daemon (guacd) version 1.1.0 started
Apr 11 14:48:03 ubuntu1804 guacd[28833]: Starting guacd: guacd[28834]: INFO:        Guacamole proxy daemon (guacd) version 1.1.0 started
Apr 11 14:48:03 ubuntu1804 guacd[28833]: SUCCESS
Apr 11 14:48:03 ubuntu1804 systemd[1]: Started LSB: Guacamole proxy daemon.
Apr 11 14:48:03 ubuntu1804 guacd[28847]: Listening on host 127.0.0.1, port 4822

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

Primero, descarga el archivo binario de Guacamole con el siguiente comando:

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

Una vez completada la descarga, cópialo en el directorio /etc/guacamole:

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/tomcat8/webapps/

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

systemctl restart tomcat8
systemctl restart guacd

Configurar Guacamole

Después de instalar Guacamole, tienes que 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. A continuación, crea un directorio lib y extensiones con el siguiente comando:

mkdir /etc/guacamole/{extensions,lib}

A continuación, la variable de entorno guacamole home directory al archivo de configuración por defecto de tomcat8.

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

El método de autenticación por defecto de Guacamole lee todos los usuarios y conexiones de un único archivo llamado user-mapping.xml. Este archivo definirá el usuario que puede acceder a la interfaz web de Guacamole, los servidores a los que debe conectarse y el método de conexión.

Primero, genera un hash md5 para la contraseña con el siguiente comando:

echo -n yoursecurepassword | openssl md5

Deberías obtener la siguiente salida:

(stdin)= 55b38b03e7587a45fd886977842ff9b8

Nota: Recuerda este hash, tendrás que especificarlo 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

Añade las siguientes líneas:

<user-mapping>
    <authorize 
            username="admin"
            password="55b38b03e7587a45fd886977842ff9b8"
            encoding="md5">

        <connection name="Ubuntu-Server">
            <protocol>ssh</protocol>
            <param name="hostname">192.168.0.150</param>
            <param name="port">22<param>
            <param name="username">root</param>
        </connection>
        <connection name="Windows Server">
            <protocol>rdp</protocol>
            <param name="hostname">192.168.0.100</param>
            <param name="port">3389</param>
        </connection>
    </authorize>
</user-mapping>

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia Tomcat y el servicio Guacamole para aplicar los cambios:

systemctl restart tomcat8
systemctl restart guacd

Accede a la interfaz web de Guacamole

Llegados a este punto, el servidor de Guacamole está instalado y configurado. Ahora, es el momento de acceder a él a través de un navegador web.

Abre tu navegador web y escribe la URL http://your-server-ip:8080/guacamole/. Serás redirigido a la página de inicio de sesión de Apache Guacamole:

Inicio de sesión de guacamole

Proporciona el nombre de usuario y la contraseña que has especificado en el archivo user-mapping.xml y haz clic en el botón Login. Deberías ver el panel por defecto de Apache Guacamole con todas las conexiones:

Conexiones recientes

Ahora, haz clic en el servidor de Ubuntu y se te pedirá que introduzcas la contraseña del usuario que has definido en el user-mapping.xml como se muestra a continuación:

Inicio de sesión en Shell

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

Se ha iniciado la sesión en el servidor con éxito

Configurar Nginx como Proxy Inverso para Guacamole

A continuación, tendrás que configurar Nginx como proxy inverso para acceder al panel de control de Guacamole. En primer lugar, instala el servidor web Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado, 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, comprueba si el Nginx tiene algún error de sintaxis con el siguiente comando:

nginx -t

Deberías obtener la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Por último, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

Ahora puedes acceder a la interfaz web de Guacamole utilizando la URL http://your-server-ip.

Conclusión

Enhorabuena! has instalado con éxito la pasarela de escritorio remoto Guacamole en el servidor Ubuntu 18.04. Ahora puedes añadir otro servidor remoto que quieras gestionar de forma remota a través de un navegador web.

También te podría gustar...