GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Configurar Apache Guacamole Remote Desktop en el servidor Ubuntu 20.04

Este tutorial le mostrará cómo configurar el escritorio remoto Guacamole en el servidor Ubuntu 20.04. Guacamole es una puerta de enlace de escritorio remoto gratuita y de código abierto desarrollada por la fundación de software Apache.

Características del guacamole

  • Le permite acceder a su escritorio remoto desde un navegador web. No es necesario instalar ningún otro software en el lado del cliente.
  • Admite protocolos estándar como VNC, RDP, SSH y Kubernetes.
  • Las sesiones de VNC se pueden grabar gráficamente.
  • Inicio de sesión único con CAS, OpenID Connect o SAML 2.0
  • Wake-on-LAN
  • Administre fácilmente varias sesiones de escritorio remoto.
  • Admite la autenticación de dos factores TOTP.
  • Admite portapapeles (copiar y pegar) y transferencia de archivos a través de SFTP.
  • Admite entrada y salida de audio
  • y más.

Guacamole en sí no es un protocolo de escritorio remoto. Es un proxy entre el escritorio remoto y el cliente, por lo que el escritorio remoto se puede mostrar y controlar en un navegador web.

Paso 1:Cree el servidor de guacamole desde la fuente

Inicie sesión en su servidor Ubuntu 20.04 e instale los paquetes de dependencia.

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

Descarga la última versión estable de guacamole-server.

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

Extraiga el archivo.

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

Cambie al directorio extraído.

cd guacamole-server-1.2.0

Configure el entorno de compilación.

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

Luego compila guacamole-server.

sudo make

Instale el servidor de guacamole.

sudo make install

Actualice la memoria caché del sistema de las bibliotecas instaladas.

sudo ldconfig

Vuelva a cargar systemd, para que pueda encontrar el guacd (Guacamole proxy daemon) servicio instalado en /etc/init.d/ directorio.

sudo systemctl daemon-reload

Inicie el guacd servicio.

sudo systemctl start guacd

Habilite el inicio automático en el momento del arranque.

sudo systemctl enable guacd

Comprueba su estado.

systemctl status guacd

Como puede ver, está activo (en ejecución) .

Guacd escucha en 127.0.0.1:4822 , como se puede mostrar con el ss utilidad.

sudo ss -lnpt | grep guacd

Paso 2:Instale la aplicación web Guacamole

La aplicación web de Guacamole está escrita en Java, por lo que debemos instalar un contenedor de Java Servlet como Apache Tomcat.

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

Apache Tomcat escuchará en el puerto 8080, como se puede mostrar con:

sudo ss -lnpt | grep java

Si tiene otro software que escucha en el puerto 8080, entonces Tomcat no puede vincularse al puerto 8080. Debe configurar el otro proceso para usar un puerto diferente, luego reinicie Tomcat (sudo systemctl restart tomcat9 ).

A continuación, descargue la aplicación web Guacamole.

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

Mueva el archivo al directorio de la aplicación web (/var/lib/tomcat9/webapps ) y cambie el nombre del archivo al mismo tiempo (elimine el número de versión).

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

Reinicie Tomcat y guacd.

sudo systemctl restart tomcat9 guacd

Paso 3:Configurar Guacamole

Cree un directorio de configuración para Guacamole.

sudo mkdir /etc/guacamole/

Cree un archivo de configuración.

sudo nano /etc/guacamole/guacamole.properties

Agregue las siguientes líneas en este archivo. Algunas personas podrían decir que no necesita agregar estas líneas porque son los valores predeterminados. Te muestro una configuración básica, para que puedas personalizarla cuando surja la necesidad.

# 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

Guarde y cierre el archivo. El módulo de autenticación predeterminado en Guacamole lee los nombres de usuario y las contraseñas de un archivo XML:/etc/guacamole/user-mapping.xml . Antes de crear este archivo, debemos generar un hash MD5 para su contraseña con el siguiente comando. Reemplace your_password con su contraseña preferida.

echo -n your_password | openssl md5

Salida de muestra:

(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517

A continuación, cree el archivo XML de asignación de usuarios.

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

Agregue las siguientes líneas. Aquí especificamos que el backend utilizará el protocolo VNC (Vritual Network Computing). Reemplace el nombre de usuario y el hash de la contraseña. Crearemos una contraseña de VNC más tarde.

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

Guarde y cierre el archivo. Reinicie Tomcat y guacd.

sudo systemctl restart tomcat9 guacd

Paso 4:Instale un entorno de escritorio en el servidor Ubuntu 20.04

Como vamos a configurar un escritorio remoto, necesitamos un entorno de escritorio. Asegúrese de que su servidor tenga suficiente RAM antes de instalar un entorno de escritorio. Hay muchos entornos de escritorio. Descubrí que el entorno de escritorio ligero XFCE funciona bien con VNC, así que instálelo con el siguiente comando.

sudo apt install xfce4 xfce4-goodies firefox

Durante la instalación, es posible que se le pida que elija un administrador de pantalla predeterminado. Esta elección no importa mucho, porque no verá la pantalla de inicio de sesión en una sesión de VNC.

Dado que hay un entorno de escritorio ejecutándose en el servidor, se recomienda enfáticamente que use un firewall como UFW para restringir el acceso y abrir solo los puertos necesarios al público. Puede leer el siguiente tutorial para aprender cómo habilitar y usar UFW en Ubuntu.

  • Cómo usar el cortafuegos UFW en Debian, Ubuntu, Linux Mint

Paso 5:Instale un servidor VNC en el servidor Ubuntu 20.04

Hay varios software de servidor VNC disponibles para usuarios de Linux. Vamos a usar el servidor TigerVNC porque funciona mejor con Guacamole.

sudo apt install tigervnc-standalone-server

Ejecute el siguiente comando para iniciar el servidor VNC.

vncserver

Cuando TigerVNC se inicia por primera vez, le pide que configure una contraseña de VNC. Tenga en cuenta que la contraseña no debe tener más de 8 caracteres. Luego puede elegir si necesita una contraseña de solo lectura.

Ahora debes editar el /etc/guacamole/user-mapping.xml y cambie la contraseña de VNC. Luego reinicie Tomcat y guacd.

sudo systemctl restart tomcat9 guacd

El vncserver El comando crea dos archivos en su directorio de inicio.

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

El archivo xstartup especifica las aplicaciones que iniciará el servidor TigerVNC. Edite este archivo.

nano ~/.vnc/xstartup

Cambiar

#!/bin/sh

a

#!/bin/bash

Porque Bash es el Shell estándar en Linux. Luego comenta las siguientes líneas. (Agregue un # carácter al principio de cada línea).

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

A continuación, agregue la siguiente línea en la parte inferior, lo que hará que el servidor TigerVNC inicie el entorno de escritorio LXQT. El startxfce4 el binario es instalado por xfce4-session paquete.

startxfce4 &

Guarde y cierre el archivo.

Resolución de problemas

Si su servidor tigerVNC no creó el ~/.vnc/xstartup archivo y el servidor VNC falló como se muestra a continuación:

Luego puede crear manualmente el archivo.

nano ~/.vnc/xstartup

Agregue las siguientes líneas en el archivo.

#!/bin/sh

xrdb $HOME/.Xresources
startxfce4 &

Guarde y cierre el archivo.

Creación de un servicio Systemd

El servidor TigerVNC no se envía con ninguna unidad de servicio systemd. Para que se inicie en el momento del arranque, necesitamos crear una unidad de servicio systemd.

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

Agregue las siguientes líneas en el archivo. Reemplace el nombre de usuario con su nombre de usuario real.

[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

Guarde y cierre el archivo. Detenga la instancia actual del servidor VNC.

vncserver -kill :1

Inicie el servidor VNC con systemd.

sudo systemctl start [email protected]

Habilite el inicio automático en el momento del arranque.

sudo systemctl enable [email protected]

Compruebe su estado:

systemctl status [email protected]

Como puede ver, está activo (en ejecución).

Ahora TigerVNC Server escucha en el puerto 5901.

sudo ss -lnpt | grep vnc

Paso 6:configurar un proxy inverso para la aplicación web Guacamole

Apache Tomcat está escuchando en el puerto 8080. Para tener una manera fácil de acceder a la aplicación web Guacamole, podemos configurar un proxy inverso con Apache o Nginx, de modo que los usuarios finales puedan usar un nombre de dominio para acceder a la aplicación web. También nos permite instalar fácilmente un certificado TLS para cifrar la conexión.

Apache

Si prefiere usar Apache, instale Apache desde el repositorio de software predeterminado de Ubuntu.

sudo apt install apache2

Para usar Apache como proxy inverso, debemos habilitar el proxy módulos y el módulo de cabecera.

sudo a2enmod proxy proxy_http headers proxy_wstunnel

Luego cree un archivo de host virtual para Guacamole.

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

Agregue las siguientes líneas en el archivo. Reemplace guacamole.example.com con su propio nombre de dominio. Recuerde crear un registro A para el subdominio en su administrador de DNS. Si no tiene un nombre de dominio real, le recomiendo ir a NameCheap para comprar uno. El precio es bajo y brindan protección de privacidad whois gratis de por vida.

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

Guarde y cierre el archivo. Pruebe la sintaxis.

sudo apachectl -t

Si Syntx está bien, habilite este host virtual.

sudo a2ensite guacamole.conf

Reiniciar Apache

sudo systemctl restart apache2

Ahora puede acceder a la página de inicio de sesión de Apache Guacamole a través de guacamole.example.com . Si ve el mensaje de "solicitud no válida" o un mensaje de error similar, podría significar que Apache Tomcat no puede vincularse al puerto 8080, porque este puerto ya está ocupado por otro proceso en el servidor. Debe configurar el otro proceso para usar un puerto diferente y luego reiniciar Tomcat.

Nginx

Si prefiere usar Nginx, instale Nginx desde el repositorio de software predeterminado de Ubuntu.

sudo apt install nginx

Cree un archivo de bloqueo del servidor para Guacamole.

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

Agregue las siguientes líneas en el archivo. Reemplace guacamole.example.com con su propio nombre de dominio. Recuerde crear un registro A para el subdominio en su administrador de DNS. Si no tiene un nombre de dominio real, le recomiendo ir a NameCheap para comprar uno. El precio es bajo y brindan protección de privacidad whois gratis de por vida.

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

}

Guarde y cierre este archivo. Luego pruebe la configuración de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar Nginx para que el cambio surta efecto.

sudo systemctl reload nginx

Ahora puede acceder a la página de inicio de sesión de Apache Guacamole a través de guacamole.example.com . Si ve el mensaje de "solicitud no válida" o un mensaje de error similar, podría significar que Apache Tomcat no puede vincularse al puerto 8080, porque este puerto ya está ocupado por otro proceso en el servidor. Debe configurar el otro proceso para usar un puerto diferente y luego reiniciar Tomcat.

Habilitar HTTPS

Para cifrar el tráfico HTTP cuando visita la interfaz web de Guacamole, podemos habilitar HTTPS instalando un certificado TLS gratuito emitido por Let's Encrypt. Ejecute el siguiente comando para instalar el cliente Let's Encrypt (certbot) en Ubuntu 20.04.

sudo apt install certbot

Si usa Apache, entonces necesita instalar el complemento Certbot Apache.

sudo apt install python3-certbot-apache

A continuación, ejecute el siguiente comando para obtener e instalar el certificado TLS.

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

Si usa Nginx, también necesita instalar el complemento Certbot Nginx.

sudo apt install python3-certbot-nginx

A continuación, ejecute el siguiente comando para obtener e instalar el certificado TLS.

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

donde:

  • --nginx :use el complemento nginx.
  • --apache :Utilice el complemento de Apache.
  • --agree-tos :Acepto los términos del servicio.
  • --redirect :Forzar HTTPS por redirección 301.
  • --hsts :agregue el encabezado Strict-Transport-Security a cada respuesta HTTP. Obligar al navegador a usar siempre TLS para el dominio. Protege contra la eliminación de SSL/TLS.
  • --staple-ocsp :activa el grapado OCSP. Se grapa una respuesta OCSP válida al certificado que ofrece el servidor durante TLS.

Ahora se debe obtener el certificado e instalarlo automáticamente.

Y puede acceder a la interfaz web de Guacamole a través de HTTPS. (https://guacamole.ejemplo.com).

Después de iniciar sesión, podrá usar el escritorio remoto.

Conclusión

Espero que este tutorial le haya ayudado a configurar el escritorio remoto Apache Guacamole en el servidor Ubuntu 20.04. Como siempre, si esta publicación le resultó útil, suscríbase a nuestro boletín gratuito para obtener más consejos y trucos. Cuídate 🙂


Ubuntu
  1. Cómo iniciar, detener o reiniciar el servidor Apache en Ubuntu

  2. Cómo instalar Escritorio remoto (Xrdp) en Ubuntu 18.04

  3. Escritorio remoto de Ubuntu:cómo configurarlo y conectarse a él

  4. Cómo instalar Xrdp (escritorio remoto) en Ubuntu 20.04 LTS

  5. ¿Convertir Ubuntu Desktop 14.04 en servidor?

Cómo configurar Quad 9 DNS en Ubuntu 16.04 y Ubuntu 17.10 Desktop

Cómo instalar LAMP Stack en servidor/escritorio Ubuntu 18.04

Cómo instalar LAMP Stack en servidor/escritorio Ubuntu 20.04

Cómo configurar el escritorio remoto en Ubuntu (Xrdp)

Cómo instalar Apache Guacamole en Ubuntu 20.04 LTS

Cómo instalar el servidor Xrdp (escritorio remoto) en Ubuntu 22.04