GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar Apache Guacamole en Debian 11

Apache Guacamole es una puerta de enlace de escritorio remoto gratuita y de código abierto que le permite conectarse a su computadora/servidor de forma remota utilizando diferentes protocolos como SSH, RDP y VNC. Apache Guacamole es mantenido por Apache Software Foundation y tiene la licencia Apache License 2.0.

Apache Guacamole es una puerta de enlace de escritorio remoto sin cliente. Puede acceder a Apache Guacamole usando solo un navegador web desde cualquier lugar y en cualquier momento. Se recomienda usar Apache Guacamole si tiene varios sistemas operativos remotos con diferentes protocolos, como Windows con RDP, sistema Linux con VNC y SSH.

En este tutorial, instalará y configurará Apache Guacamole en Debian 11 Bullseye. Esto incluye instalar algunas dependencias de paquetes y Apache Tomcat 9, luego construir el servidor Guacamole e instalar la aplicación Java, la aplicación web Guacamole. Al final, configurará Nginx como un proxy inverso para la aplicación web Guacamole que le permite acceder a sus servidores desde cualquier lugar, siempre que tenga un navegador web.

Requisitos

Para completar este tutorial, necesitará los siguientes requisitos:

  • Un servidor con al menos 2 GB de RAM que ejecute Debian 11 Bullseye.
  • Un usuario usuario o no root con privilegios de root.
  • Conocimientos básicos con el editor nano. O puede usar su editor preferido, como vim.

Instalación de dependencias de compilación

Al principio, instalará algunas dependencias de compilación para compilar el servidor Apache Guacamole. Esto incluye algunos paquetes básicos como 'libvncserver-dev ' que permiten la compatibilidad con el protocolo VNC, 'libssh2-1 ' para el protocolo SSH, 'freerdp2-dev ' para el protocolo RDP y 'libwebsockets-dev ' por el soporte de Kubernetes.

A modo de consideración, no instalará 'libtelnet-dev' para los soportes de Telnet. Esto se debe a que telnet se considera un protocolo antiguo y no seguro.

1. Ahora, actualice su lista de paquetes ejecutando el siguiente comando apt.

sudo apt update

2. Después de eso, instale las dependencias para construir el servidor Apache Guacamole ejecutando el siguiente comando.

sudo apt install -y freerdp2-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libcairo2-dev libjpeg62-turbo-dev libjpeg-dev libpng-dev libtool-bin libpango1.0-dev libpango1.0-0 libssh2-1 libwebsockets16 libwebsocketpp-dev libossp-uuid-dev libssl-dev libwebp-dev libvorbis-dev libpulse-dev libwebsockets-dev libvncserver-dev libssh2-1-dev openssl

Este comando puede tardar un poco en finalizar, dependiendo de la conexión a Internet de su servidor.

Instalando Apache Tomcat 9

Después de instalar las dependencias de compilación, instalará Apache Tomcat 9. Este paquete es necesario para la aplicación web Guacamole, que es una aplicación web escrita en Java.

1. Ejecute el siguiente comando para instalar Apache Tomcat 9 en su sistema.

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

2. Después de instalar Apache Tomcat 9, inicie y habilite el servicio Apache Tomcat ejecutando el siguiente comando. En los sistemas basados ​​en Debian, Apache Tomcat 9 viene con el servicio llamado 'tomcat9 '.

sudo systemctl enable --now tomcat9

3. Ahora, si todo se ve bien, verifique el estado de 'tomcat9 ' servicio ejecutando el siguiente comando.

sudo systemctl status tomcat9

Recibirá el siguiente resultado. Asegúrese de que 'tomcat9 ' el servicio está 'activo (en ejecución) '.

Compilando Guacamole-server

En esta sección, descargará y compilará el servidor Guacamole. Este es el componente principal de Apache Guacamole, que contiene bibliotecas para conectarse a servidores y escritorios remotos. El servidor Guacamole contiene la biblioteca C 'libguacd' y todas las bibliotecas para los protocolos compatibles, así como el corazón de Guacamole, guacd.

El guacd maneja todas las conexiones de clientes que se canalizan desde la aplicación web guacamole, luego se conecta a servidores y escritorios remotos en su nombre. Al crear y compilar el servidor Guacamole, tendrá un nuevo servicio 'guacd' en su sistema.

1. Comience navegando por el directorio de trabajo hasta '/usr/src '. Todo el código fuente para construir y compilar cosas va a este directorio.

cd /usr/src

2. Ahora, descargará el código fuente del servidor Guacamole ejecutando el comando wget a continuación. Asegúrese de consultar la página de descarga de Guacamole y copiar la última versión del servidor de Guacamole. En el momento de escribir este artículo, la última versión es 1.3.0.

wget https://dlcdn.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz

3. Luego, extraiga el código fuente y obtendrá un nuevo directorio 'guacamole-server-VERSION-NUMBER' . Navegue a ese directorio.

tar -xzvf guacamole-server-1.3.0.tar.gz
cd guacamole-server-*/

4. Ahora, verifique todos los requisitos del sistema para construir el servidor Guacamole y configure su entorno ejecutando el siguiente comando. La opción '--with-systemd-dir=/etc/systemd/system/' se utiliza para configurar el archivo de servicio systemd, que estará disponible en el directorio '/etc/systemd/system/ '.

./configure --with-systemd-dir=/etc/systemd/system/

Recibirá un resultado similar a este:

------------------------------------------------
guacamole-server version 1.3.0
------------------------------------------------

   Library status:

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

   Protocol support:

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

   Services / tools:

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

   FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
   Init scripts: no
   Systemd units: /etc/systemd/system/

Type "make" to compile guacamole-server.

Eche un vistazo al 'Estado de las bibliotecas ' y 'Soporte de protocolo ' secciones. Puede ajustar los soportes de protocolo instalando dependencias y bibliotecas adicionales.

5. A continuación, compile e instale el servidor Guacamole ejecutando el siguiente comando.

make
make install

El proceso de compilación e instalación puede tardar algún tiempo en completarse.

6. Ahora, después de que todo esté completo, ejecute el siguiente comando para aplicar todas las nuevas bibliotecas del sistema.

sudo ldconfig

En esta sección, ha instalado el paquete Guacamole-server. A continuación, creará algunas configuraciones necesarias para el servidor Guacamole.

Configuración del servidor de guacamole

Para hacer que el servidor Guacamole funcione, creará el directorio de configuración '/etc/guacamole/ ', luego cree un nuevo archivo 'guacamole.properties ' como configuración predeterminada del servidor Guacamole, archivo 'logback.xml' para el sistema de registro de Guacamole y el archivo 'user-mapping.xml' para definir la autenticación de los usuarios de Guacamole y las conexiones a servidores y escritorios remotos.

1. Para comenzar, ejecute el siguiente comando para crear un nuevo directorio '/etc/guacamole/ ' dentro de directorios adicionales 'extensiones ' y 'lib' en el interior. Luego agregue la variable de entorno 'GUACAMOLE_HOME=/etc/guacamole ' al archivo '/etc/default/tomcat9'. Esto le indicará al contenedor de servlets de Tomcat 9 que busque el 'GUACAMOLE_HOME ' al directorio '/etc/guacamole/ '.

mkdir -p /etc/guacamole/{extensions,lib}
echo 'GUACAMOLE_HOME=/etc/guacamole' >> /etc/default/tomcat9

2. Ahora, cree la configuración principal 'guacamole.properties ' usando nano o su editor preferido.

sudo nano /etc/guacamole/guacamole.properties

Introduzca la siguiente configuración:

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822

# user mapping and user connections
user-mapping:    /etc/guacamole/user-mapping.xml
  • La opción 'guacd-hostname' define el nombre de host o la dirección IP en la que se ejecutará el servicio guacd. Este tutorial usa localhost para ejecutar el servicio guacd.
  • La opción 'guacd-port ' define el puerto predeterminado para el servicio guacd. Este tutorial usa el puerto '4822 ' para el servicio guacd.
  • La opción 'mapeo de usuarios' define la configuración del archivo para la autenticación de los usuarios y una lista de conexiones disponibles. Este tutorial utiliza el archivo '/etc/guacamole/user-mapping.xml' para definir usuarios y conexiones para el servidor Guacamole. Es posible que le interese utilizar otro método de autenticación, consulte la Documentación de Guacamole.

Guarde y cierre el archivo.

3. A continuación, cree una nueva configuración 'loogback.xml ' para iniciar sesión y depurar. De forma predeterminada, el Guacamole se registrará solo en la consola. El uso de esta configuración le permite a Guacamole iniciar sesión a través del marco de registro Logback.

sudo nano /etc/guacamole/logback.xml

Agregue las siguientes líneas de configuración.

<configuration>

    <!-- Appender for debugging -->
    <appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Log at DEBUG level -->
    <root level="debug">
        <appender-ref ref="GUAC-DEBUG"/>
    </root>

</configuration>

Guarde y cierre el archivo de configuración.

4. Ahora, generará un nuevo hash de contraseña md5 y creará un nuevo archivo para la autenticación y las conexiones del usuario de Guacamole.

Ejecute el siguiente comando para generar el hash de contraseña md5. Y asegúrese de cambiar la contraseña con su contraseña segura.

echo -n StrongPasswordUserJohnDoe | openssl md5

Recibirá una salida de la contraseña hash mod5. Cópialo en tu nota.

(stdin)= aca22211ffcfb8aa8ad7627195ad4fce

5. Después de eso, cree un nuevo archivo 'user-mapping.xml ' usando el editor nano.

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

Introduzca las siguientes configuraciones. Y asegúrese de cambiar el 'nombre de usuario' y la 'contraseña '. Además, echa un vistazo a la '... ' y agregue los detalles de su conexión a servidores o escritorios.

<user-mapping>

    <!-- Another user, but using md5 to hash the password
         (example below uses the md5 hash of "PASSWORD") -->
    <authorize
            username="johndoe"
            password="aca22211ffcfb8aa8ad7627195ad4fce"
            encoding="md5">

        <!-- First authorized connection -->
        <connection name="SSH localhost">
            <protocol>ssh</protocol>
            <param name="hostname">localhost</param>
            <param name="port">22</param>
            <param name="username">johndoe</param>
            <param name="password">SSHPASSWORD</param>
        </connection>

        <!-- Second authorized connection -->
        <connection name="localhost">
            <protocol>vnc</protocol>
            <param name="hostname">localhost</param>
            <param name="port">5901</param>
            <param name="password">VNCPASS</param>
        </connection>

        <!-- Third authorized connection -->
        <connection name="otherhost">
            <protocol>vnc</protocol>
            <param name="hostname">otherhost</param>
            <param name="port">5900</param>
            <param name="password">VNCPASS</param>
        </connection>

    </authorize>

</user-mapping>

Guarde y cierre el archivo.

Ahora ha completado la configuración del servidor Guacamole. A continuación, instalará y configurará la aplicación web Guacamole, que es la aplicación web que verá en su navegador.

Instalación de la aplicación web Guacamole Client

En esta sección, instalará la aplicación web Guacamole en su sistema. Esto se puede hacer descargando el archivo binario compilado de la aplicación web Guacamole e implementándolo en el directorio 'webaps' de Tomcat.

1. Navegue por su directorio de trabajo hasta '/usr/src' y descargue la aplicación web compilada Guacamole '.war ' usando el comando wget. Asegúrese de visitar la página de descarga de Guacamole y copie el enlace de la última versión de la aplicación web de Guacamole.

cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war

2. Ahora, implemente la aplicación binaria de Java 'guacamole-VERSION.war ' al directorio de Tomcat '/var/lib/tomcat9/webapps/' ejecutando el siguiente comando. Esto hace que la aplicación web Guacamole sea accesible a través del contenedor de servlet Apache Tomcat.

sudo cp guacamole-1.3.0.war /var/lib/tomcat9/webapps/guacamole.war

3. Después de eso, reinicie el servicio Tomcat 9 para aplicar una nueva aplicación web.

sudo systemctl restart tomcat9

4. A continuación, inicie y habilite el 'guacd ' servicio ejecutando el siguiente comando.

sudo systemctl enable --now guacd

Luego verifíquelo usando el siguiente comando.

sudo systemctl status guacd

Recibirá el resultado como la captura de pantalla a continuación.

En este punto, ha completado la instalación de la aplicación del servidor Guacamole (backend) y la aplicación web Guacamole (front-end). A continuación, configurará Nginx como proxy inverso para la aplicación web Guacamole.

Configurar Nginx Reverse proxy para Guacamole

En esta sección, instalará el servidor web Nginx y lo configurará como proxy inverso para la aplicación web Guacamole. Esto le permite configurar el nombre de dominio para su aplicación web Guacamole y asegurarlo con certificados SSL.

1. Para comenzar, ejecute el siguiente 'apt ' comando para instalar paquetes Nginx.

sudo apt install nginx -y

2. Después de instalar todos los paquetes de Nginx, cree un nuevo archivo de host virtual 'guacamole' en el directorio '/etc/nginx/sites-disponible '. Todas las configuraciones relacionadas con el proxy inverso Guacamole se almacenarán en este archivo.

sudo nano /etc/nginx/sites-available/guacamole

Ingrese esta siguiente configuración. Y asegúrese de cambiar el nombre de dominio y la ruta de los certificados SSL. Este ejemplo usa el dominio 'example.io' con la clave privada SSL 'privkey.pem ' y la clave pública 'fullchain.pem ', y certificados de bot disponibles en el directorio '/etc/letsencrypt/live/exmaple.io/'.

server {
    listen      80;
    server_name example.io;
    rewrite     ^   https://$server_name$request_uri? permanent;
}

server {
    listen      443 ssl http2;
    server_name example.io;

    root /var/www/html;
    index index.html;

    location / {
       try_files $uri $uri/ =404;
    }

    ssl_certificate /etc/letsencrypt/live/example.io/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.io/privkey.pem;

    access_log /var/log/nginx/guacamole-access.log;
    error_log /var/log/nginx/guacamole-error.log;

    location /guacamole/ {
        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;
        access_log off;
    }
}

Guarde y cierre el archivo.

3. Ahora, active el archivo de host virtual 'guacamole ' creando un nuevo enlace simbólico al directorio '/etc/nginx/sites-enabled/ '. Luego verifique todas las configuraciones de Nginx para verificar si hay errores de sintaxis.

sudo ln -s /etc/nginx/sites-available/guacamole /etc/nginx/sites-enabled/
sudo nginx -t

Recibirá una salida 'Sintaxis OK ', lo que significa que la configuración no tiene ningún error.

4. Luego, reinicie el servicio Nginx para aplicar una nueva configuración, luego verifique su estado ejecutando el siguiente comando.

sudo systemctl restart nginx
sudo systemtl status nginx

Recibirá un resultado similar a la captura de pantalla a continuación. El servicio Nginx está 'activo (en ejecución) '.

5. Además, si desea implementar la aplicación web Guacamole en una sub-URL diferente, cambie la opción 'ubicación /guacamole/ { ... } ' a la nueva ruta 'ubicación /nueva-ruta/ { ... } ' y agregue la opción 'proxy_cookie_path ' a su nueva ruta como se muestra a continuación.

location /new-path/ {
    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/ /new-path/;
    access_log off;
}

En esta sección, completó la instalación y configuración de Nginx como proxy inverso para la aplicación web Guacamole. En este punto, su instalación de Apache Guacamole está completa y es accesible desde su nombre de dominio.

Verificar la instalación de Apache Guacamole

En esta sección, verificará la instalación de Apache Guacamole.

En primer lugar, abra su navegador web y escriba el nombre de dominio para su instalación de Guacamole con la ruta predeterminada '/guacamole' .

https://ejemplo.io/guacamole/

Ahora, verá la página de inicio de sesión de Guacamole a continuación. Ingrese su nombre de usuario y contraseña que configuró en el archivo 'user-mapping.xml' , luego haga clic en el botón Iniciar sesión.

Después de iniciar sesión, verá una lista de conexiones definidas para sus usuarios.

Haga clic en el nombre de la conexión para conectarse al servidor de destino. Este ejemplo se conectará al servidor local con el protocolo SSH.

Ahora, verá una nueva sesión de terminal ssh en su servidor.

Conclusión

¡Felicidades! En este tutorial, ha aprendido a instalar Apache Guacamole en Debian 11 Bullseye. Además, aprendió a configurar la autenticación de usuario y las conexiones mediante el archivo de configuración 'user-mapping.xml ' y configure Nginx como un proxy inverso para la aplicación web Guacamole, lo que le permite ejecutar Guacamaloe usando el nombre de dominio y asegurarlo usando certificados SSL.


Debian
  1. Cómo instalar Apache en Debian 9

  2. Cómo instalar Apache Cassandra en Debian 9

  3. Cómo instalar Apache Maven en Debian 10

  4. Cómo instalar Apache Maven en Debian 11

  5. Cómo instalar Apache Cassandra en Debian 11 / Debian 10

Cómo instalar Apache Cassandra en Debian 10

Cómo instalar Apache Groovy en Debian 10

Cómo instalar Apache Spark en Debian 10

Cómo instalar Apache Ant en Debian 10

Cómo instalar Apache Kafka en Debian 10

Cómo instalar Apache Guacamole en Debian 11