Поиск по сайту:

Как установить и использовать удаленный рабочий стол Apache Guacamole в Rocky Linux 8


На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите библиотеки
  4. Шаг 3. Установите Apache Tomcat
    1. Установить Java
    2. Создать пользователя Tomcat
    3. Загрузить Tomcat
    4. Создайте файл модуля Systemd и запустите Tomcat.

    1. Настройка проверки подлинности базы данных Apache Guacamole
    2. Настроить файл свойств гуакамоле

    1. Настройка Tomcat для обратного прокси-подключения
    2. Установите Nginx

    1. Создать нового пользователя-администратора

    Apache Guacamole – это бесплатный бесклиентский шлюз удаленного рабочего стола с открытым исходным кодом. Он поддерживает стандартные протоколы, такие как SSH, RDP и VNC. Для работы не нужны никакие сторонние плагины и клиенты. Вы можете получить доступ к своей машине с помощью веб-шлюза. Его можно разместить за прокси-сервером, который позволит вам получить доступ к вашим серверам из любой точки мира.

    Гуакамоле состоит из двух компонентов:

    • guacamole-server содержит все собственные серверные компоненты, необходимые Guacamole для подключения к удаленным рабочим столам. guacd — это прокси-демон, который работает на сервере Guacamole, принимает подключения пользователей и затем подключает их к удаленным рабочим столам.
    • guacamole-client содержит все компоненты Java и Javascript Guacamole, которые составляют веб-приложение, с помощью которого пользователи могут подключаться к своим рабочим столам.

    В этом руководстве вы узнаете, как установить и использовать Apache Guacamole на сервере под управлением Rocky Linux 8. Вы также узнаете, как использовать его для подключения к удаленному рабочему столу. Мы будем устанавливать Guacamole, собирая исходный код.

    Предпосылки

    • A server running Rocky Linux 8 with a minimum of 2GB RAM and 2 CPU Cores.

    • A domain name for the helpdesk pointing to the server. For our tutorial, we will use the uvdesk.example.com domain.

    • A non-root based user with sudo privileges.

    • Make sure everything is updated.

      $ sudo dnf update
      
    • Install basic utility packages. Some of them may already be installed.

      $ sudo dnf install wget curl nano unzip yum-utils -y
      

    Шаг 1. Настройте брандмауэр

    Первым шагом является настройка брандмауэра. Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.

    $ sudo firewall-cmd --state
    running
    

    Брандмауэр работает с разными зонами, и мы будем использовать публичную зону по умолчанию. Перечислите все службы и порты, активные на брандмауэре.

    $ sudo firewall-cmd --permanent --list-services
    

    Он должен показать следующий вывод.

    cockpit dhcpv6-client ssh
    

    Разрешить порты HTTP и HTTPS.

    $ sudo firewall-cmd --permanent --add-service=http
    $ sudo firewall-cmd --permanent --add-service=https
    

    Перепроверьте состояние брандмауэра.

    $ sudo firewall-cmd --permanent --list-services
    

    Вы должны увидеть аналогичный вывод.

    cockpit dhcpv6-client http https ssh
    

    Перезагрузите брандмауэр, чтобы изменения вступили в силу.

    $ sudo firewall-cmd --reload
    

    Шаг 2 — Установите библиотеки

    Перед установкой библиотек нам нужно установить репозиторий EPEL и включить репозиторий PowerTools.

    $ sudo dnf install epel-release -y
    $ sudo dnf config-manager --set-enabled powertools
    

    Первым шагом является установка библиотек, необходимых для сборки Guacamole. Установите необходимые библиотеки.

    $ sudo dnf install cairo-devel libjpeg-turbo-devel libjpeg-devel libpng-devel libtool libuuid-devel uuid-devel make cmake
    

    Вышеуказанные зависимости являются обязательными, а значит, без них гуакамоле не построить. Вы можете установить некоторые дополнительные зависимости, чтобы добавить поддержку различных протоколов и функций.

    Но сначала вам нужно включить бесплатный репозиторий RPMFusion, так как он содержит пакет ffmpeg-devel.

    $ sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
    

    Установите дополнительные зависимости.

    $ sudo dnf install ffmpeg-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel pulseaudio-libs-devel openssl-devel compat-openssl10 libvorbis-devel libwebp-devel libgcrypt-devel
    

    Шаг 3 — Установите Apache Tomcat

    В нашем руководстве мы установим Apache Tomcat 9, для работы которого требуется Java 8 и более поздние версии.

    Установить Java

    Мы установим OpenJDK 11, реализацию платформы Java с открытым исходным кодом.

    Выполните следующую команду, чтобы установить OpenJDK.

    $ sudo dnf install java-11-openjdk-devel
    

    Проверьте установку.

    $ java -version
    openjdk 11.0.14 2022-01-18 LTS
    OpenJDK Runtime Environment 18.9 (build 11.0.14+9-LTS)
    OpenJDK 64-Bit Server VM 18.9 (build 11.0.14+9-LTS, mixed mode, sharing)
    

    Создать пользователя Tomcat

    Затем создайте пользователя для службы Tomcat. Мы установим /opt/tomcat в качестве домашнего каталога.

    $ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
    

    Скачать Томкэт

    Последнюю версию Tomcat v10 можно загрузить со страницы загрузки. На момент написания этого руководства последней доступной версией была версия 9.0.59. Перед загрузкой Tomcat проверьте последнюю версию.

    Используйте wget для загрузки Tomcat.

    $ TVERSION=9.0.59
    $ wget https://dlcdn.apache.org/tomcat/tomcat-9/v${TVERSION}/bin/apache-tomcat-${TVERSION}.tar.gz
    

    Извлеките файл в каталог /opt/tomcat.

    $ sudo tar -xf apache-tomcat-${TVERSION}.tar.gz --strip-components=1 -C /opt/tomcat/
    

    Измените владельца каталога на пользователя Tomcat.

    $ sudo chown -R tomcat:tomcat /opt/tomcat
    

    Создайте файл модуля Systemd и запустите Tomcat

    Создайте и откройте файл /etc/systemd/system/tomcat.service для редактирования.

    $ sudo nano /etc/systemd/system/tomcat.service
    

    Вставьте следующий код.

    [Unit]
    Description=Apache Tomcat 9 Servlet container
    Wants=network.target
    After=network.target
    
    [Service]
    Type=forking
    User=tomcat
    Group=tomcat
    
    Environment="JAVA_HOME=/usr/lib/jvm/jre"
    Environment="JAVA_OPTS=-Djava.awt.headless=true"
    Environment="CATALINA_BASE=/opt/tomcat"
    Environment="CATALINA_HOME=/opt/tomcat"
    Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
    Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
    
    ExecStart=/opt/tomcat/bin/startup.sh
    ExecStop=/opt/tomcat/bin/shutdown.sh
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.

    Перезагрузите демон службы, чтобы включить службу Tomcat.

    $ sudo systemctl daemon-reload
    

    Включите и запустите службу Tomcat.

    $ sudo systemctl enable tomcat --now
    

    Проверьте статус службы.

    $ sudo systemctl status tomcat
    ? tomcat.service - Apache Tomcat 9 Servlet container
       Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
       Active: active (running) since Wed 2022-03-09 09:48:38 UTC; 8s ago
      Process: 25308 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
     Main PID: 25315 (java)
        Tasks: 29 (limit: 11412)
       Memory: 154.9M
       CGroup: /system.slice/tomcat.service
               ??25315 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties ..
    
    Mar 09 09:48:38 guacamole systemd[1]: Starting Apache Tomcat 9 Servlet container...
    Mar 09 09:48:38 guacamole systemd[1]: Started Apache Tomcat 9 Servlet container.
    

    Шаг 4 — Загрузите и соберите гуакамоле

    Вы можете получить версию 1.4.0. Загрузите исходный код гуакамоле.

    $ GVERSION=1.4.0
    $ wget https://downloads.apache.org/guacamole/${GVERSION}/source/guacamole-server-${GVERSION}.tar.gz
    

    Распакуйте архив и перейдите во вновь созданный каталог.

    $ tar -xzf guacamole-server-${GVERSION}.tar.gz
    $ cd guacamole-server-${GVERSION}/
    

    Запустите команду configure, чтобы определить, какие библиотеки доступны, и выбрать компоненты для сборки.

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

    В каталоге /etc/systemd/system/ будет установлен сценарий запуска во время процесса сборки, чтобы настроить Guacamole для автоматического запуска при загрузке.

    При успешном завершении вы получите следующий вывод.

    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    ...
    
    ------------------------------------------------
    guacamole-server version 1.4.0
    ------------------------------------------------
    
       Library status:
    
         freerdp2 ............ yes
         pango ............... yes
         libavcodec .......... yes
         libavformat.......... yes
         libavutil ........... yes
         libssh2 ............. yes
         libssl .............. yes
         libswscale .......... yes
         libtelnet ........... yes
         libVNCServer ........ yes
         libvorbis ........... yes
         libpulse ............ yes
         libwebsockets ....... yes
         libwebp ............. yes
         wsock32 ............. no
    
       Protocol support:
    
          Kubernetes .... yes
          RDP ........... yes
          SSH ........... yes
          Telnet ........ yes
          VNC ........... yes
    
       Services / tools:
    
          guacd ...... yes
          guacenc .... yes
          guaclog .... yes
    
       FreeRDP plugins: /usr/lib64/freerdp2
       Init scripts: no
       Systemd units: /etc/systemd/system/
    
    Type "make" to compile guacamole-server.
    

    Если у вас не установлены некоторые библиотеки, в выводе вы увидите no вместо yes. Но если критическая библиотека отсутствует, команда завершится ошибкой. Чтобы проверить дополнительные параметры настройки, выполните команду ./configure --help.

    Скомпилируйте и установите сервер Guacamole, используя следующие команды.

    $ make && sudo make install
    

    Выполните следующую команду, чтобы обновить системный кеш установленных библиотек.

    $ sudo ldconfig
    

    Перезагрузите сервисный демон.

    $ sudo systemctl daemon-reload
    

    Включите и запустите службу гуакамоле.

    $ sudo systemctl enable guacd --now
    

    Проверьте статус службы.

    $ sudo systemctl status guacd
    ? guacd.service - Guacamole Server
       Loaded: loaded (/etc/systemd/system/guacd.service; enabled; vendor preset: disabled)
       Active: active (running) since Thu 2022-03-10 09:13:41 UTC; 7s ago
         Docs: man:guacd(8)
     Main PID: 85349 (guacd)
        Tasks: 1 (limit: 11181)
       Memory: 10.8M
       CGroup: /system.slice/guacd.service
               ??85349 /usr/local/sbin/guacd -f
    
    Mar 10 09:13:41 guacamole systemd[1]: Started Guacamole Server.
    Mar 10 09:13:41 guacamole guacd[85349]: Guacamole proxy daemon (guacd) version 1.4.0 started
    Mar 10 09:13:41 guacamole guacd[85349]: guacd[85349]: INFO:        Guacamole proxy daemon (guacd) version 1.4.0 started
    Mar 10 09:13:41 guacamole guacd[85349]: guacd[85349]: INFO:        Listening on host ::1, port 4822
    Mar 10 09:13:41 guacamole guacd[85349]: Listening on host ::1, port 4822
    

    Шаг 5 — Установите клиент гуакамоле

    Теперь, когда вы установили сервер, следующим шагом будет установка клиента.

    Создайте каталог конфигурации для гуакамоле.

    $ sudo mkdir /etc/guacamole
    

    В отличие от сервера Guacamole, клиент Guacamole доступен в исходном коде и в двоичной форме. Для нашего урока мы загрузим двоичный файл. Однако вы можете выбрать сборку клиента из исходного кода.

    Загрузите двоичный файл клиента Guacamole с веб-сайта.

    $ sudo wget https://downloads.apache.org/guacamole/${GVERSION}/binary/guacamole-${GVERSION}.war -O /etc/guacamole/guacamole.war
    

    Приведенная выше команда загружает и копирует двоичный файл гуакамоле в каталог /etc/guacamole.

    Чтобы клиент работал, его необходимо развернуть из каталога Tomcats, который находится в $CATALINA_HOME/webapps/. На шаге 3 мы устанавливаем /opt/tomcat как $CATALINA_HOME.

    Выполните следующую команду, чтобы создать символическую ссылку из /etc/guacamole/guacamole.war в каталог веб-приложений Tomcat.

    $ sudo ln -s /etc/guacamole/guacamole.war /opt/tomcat/webapps/
    

    Измените разрешение приложения на пользователя tomcat.

    $ sudo chown -R tomcat:tomcat /opt/tomcat/webapps
    

    Создайте файл конфигурации веб-приложения в /etc/guacamole/guacd.conf.

    $ sudo nano /etc/guacamole/guacd.conf
    

    Вставьте в него следующий код. Замените your_server_IP общедоступным IP-адресом вашего сервера.

    #
    # guacd configuration file
    #
    
    [daemon]
    
    #pid_file = /var/run/guacd.pid
    log_level = info
    
    [server]
    
    bind_host = your_server_IP
    bind_port = 4822
    
    #
    # The following parameters are valid only if
    # guacd was built with SSL support.
    #
    
    # [ssl]
    
    # server_certificate = /etc/ssl/certs/guacd.crt
    # server_key = /etc/ssl/private/guacd.key
    

    Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.

    Перезапустите сервер гуакамоле и Tomcat, чтобы изменения вступили в силу.

    $ sudo systemctl restart tomcat guacd
    

    Шаг 6 — Установите и настройте MySQL

    Apache Guacamole предлагает различные методы аутентификации. Для целей тестирования достаточно простой аутентификации на основе пароля. Но для производственных сред нам необходимо реализовать более надежный и лучший метод аутентификации. Здесь мы реализуем аутентификацию на основе базы данных с использованием MySQL.

    Установите MySQL.

    $ sudo dnf install mysql-server
    

    Включите и запустите службу MySQL.

    $ sudo systemctl enable mysqld --now
    

    Безопасная установка MySQL.

    $ sudo mysql_secure_installation
    

    На первом этапе вас спросят, хотите ли вы настроить подключаемый модуль Validate Password, который вы можете использовать для проверки надежности вашего пароля MySQL. Выберите Y, чтобы продолжить. На следующем шаге вам будет предложено выбрать уровень проверки пароля. Выберите 2, который является самым надежным уровнем и потребует, чтобы ваш пароль состоял не менее чем из восьми символов и включал сочетание прописных и строчных букв, цифр и специальных символов.

    Securing the MySQL server deployment.
    
    Connecting to MySQL using a blank password.
    
    VALIDATE PASSWORD COMPONENT can be used to test passwords
    and improve security. It checks the strength of password
    and allows the users to set only those passwords which are
    secure enough. Would you like to setup VALIDATE PASSWORD component?
    
    Press y|Y for Yes, any other key for No: Y
    
    There are three levels of password validation policy:
    
    LOW    Length >= 8
    MEDIUM Length >= 8, numeric, mixed case, and special characters
    STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file
    
    Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
    

    На следующем шаге вам будет предложено выбрать пароль root. Выберите надежный пароль, который соответствует требованиям плагина проверки пароля. На следующем шаге вас спросят, следует ли продолжить с выбранным паролем. Нажмите y, чтобы продолжить.

    Please set the password for root here.
    
    New password:
    
    Re-enter new password:
    
    Estimated strength of the password: 100
    Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
    

    Нажмите Y, а затем клавишу ENTER для всех следующих запросов на удаление анонимных пользователей и тестовой базы данных, отключение входа в систему root и загрузку новых установленных правил.

    ...
    Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
    Success.
    ...
    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
    Success.
    ...
    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
     - Dropping test database...
    Success.
     - Removing privileges on test database...
    Success.
    Reloading the privilege tables will ensure that all changes
    made so far will take effect immediately.
    ...
    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
    Success.
    All done!
    

    Войдите в оболочку MySQL. Введите пароль root, чтобы продолжить.

    $ mysql -u root -p
    

    Создайте пользователя guacamole_user. Убедитесь, что пароль соответствует требованиям, установленным ранее.

    mysql> CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'Your_password2';
    

    Создайте базу данных guacamole_db.

    mysql> CREATE DATABASE guacamole_db;
    

    Предоставьте пользователю права доступа к базе данных guacamole_db.

    mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
    

    Выйдите из оболочки.

    mysql> exit
    

    Шаг 7. Настройте Apache Guacamole

    Каталог конфигурации гуакамолес определяется переменной GUACAMOLE_HOME. Все файлы конфигурации, расширения и т. д. находятся в этом каталоге. В файле /etc/guacamole/guacamole.properties хранятся все конфигурации и настройки для гуакамоле и его расширений.

    Расширения и библиотеки требуют дополнительных каталогов. Создайте их.

    $ sudo mkdir /etc/guacamole/{extensions,lib}
    

    Установите домашнюю переменную гуакамоле и сохраните ее в файле конфигурации /etc/default/tomcat.

    $ echo "GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/default/tomcat
    

    Настройка аутентификации базы данных Apache Guacamole

    Мы уже настроили базу данных для гуакамоле на предыдущем шаге. Нам нужно загрузить подключаемый модуль аутентификатора Guacamole JDBC и библиотеку MySQL Java Connector, чтобы завершить настройку.

    Загрузите подключаемый модуль Guacamole JDBC со своего веб-сайта.

    $ cd ~
    $ wget https://downloads.apache.org/guacamole/${GVERSION}/binary/guacamole-auth-jdbc-${GVERSION}.tar.gz
    

    Извлеките подключаемый модуль в каталог /etc/guacamole/extensions.

    $ tar -xf guacamole-auth-jdbc-${GVERSION}.tar.gz
    $ sudo mv guacamole-auth-jdbc-${GVERSION}/mysql/guacamole-auth-jdbc-mysql-${GVERSION}.jar /etc/guacamole/extensions/
    

    Следующим шагом является импорт схемы SQL в базу данных MySQL. Перейдите в извлеченный каталог плагина.

    $ cd guacamole-auth-jdbc-${GVERSION}/mysql/schema
    

    Импортируйте файлы схемы в MySQL.

    $ cat *.sql | mysql -u root -p guacamole_db
    

    Загрузите соединитель Java для MySQL. Возьмите архивный файл, не зависящий от платформы. На момент написания этого руководства последняя доступная версия — 8.0.28.

    $ cd ~
    $ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.28.tar.gz
    

    Извлеките архив и скопируйте его содержимое в каталог /etc/guacamole/lib.

    $ tar -xf mysql-connector-java-8.0.28.tar.gz
    $ sudo mv mysql-connector-java-8.0.28/mysql-connector-java-8.0.28.jar /etc/guacamole/lib/
    

    Настроить файл свойств гуакамоле

    Создайте файл /etc/guacamole/guacamole.properties и откройте его для редактирования.

    $ sudo nano /etc/guacamole/guacamole.properties
    

    Вставьте в него следующий код. Замените your_server_ip общедоступным IP-адресом вашего сервера.

    guacd-hostname: your_server_ip
    guacd-port:     4822
    
    # MySQL properties
    mysql-hostname: localhost
    mysql-database: guacamole_db
    mysql-username: guacamole_user
    mysql-password: Your_password2
    

    Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.

    Свяжите каталог конфигурации Guacamole с каталогом сервлета Tomcat.

    $ sudo ln -s /etc/guacamole /opt/tomcat/.guacamole
    

    Перезапустите Tomcat, чтобы включить аутентификацию базы данных. Вам не нужно перезапускать guacd, потому что он полностью независим от веб-приложения и никак не связан с guacamole.properties или аутентификацией базы данных. .

    $ sudo systemctl restart tomcat
    

    Шаг 8 — Установите SSL

    Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно установить инструмент Certbot. Для установки Certbot требуется репозиторий EPEL, но мы можем приступить непосредственно к установке, поскольку мы уже установили его ранее.

    Выполните следующие команды, чтобы установить Certbot.

    $ sudo dnf install certbot
    

    Создайте SSL-сертификат.

    $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d guacamole.example.com
    

    Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/guacamole.example.com на вашем сервере.

    Создайте групповой сертификат Диффи-Хеллмана.

    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    

    Создайте корневой каталог вызова для автоматического обновления Lets Encrypt.

    $ sudo mkdir -p /var/lib/letsencrypt
    

    Создайте задание Cron для обновления SSL. Он будет запускаться каждый день для проверки сертификата и его обновления при необходимости. Для этого сначала создайте файл /etc/cron.daily/certbot-renew и откройте его для редактирования.

    $ sudo nano /etc/cron.daily/certbot-renew
    

    Вставьте следующий код.

    #!/bin/sh
    certbot renew --cert-name guacamole.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Измените права доступа к файлу задачи, чтобы сделать его исполняемым.

    $ sudo chmod +x /etc/cron.daily/certbot-renew
    

    Шаг 9. Установите и настройте Nginx в качестве обратного прокси

    Настройка Tomcat для обратного прокси-соединения

    Перед установкой Nginx нам нужно настроить Tomcat для прохождения через удаленный IP-адрес, предоставленный обратным прокси-сервером Nginx.

    Откройте файл /opt/tomcat/conf/server.xml для редактирования.

    $ sudo nano /opt/tomcat/conf/server.xml
    

    Найдите следующую строку в файле.

    <Host name="localhost"  appBase="webapps" 
                unpackWARs="true" autoDeploy="true">
    

    Измените строку, вставив дополнительный код под ней, чтобы она выглядела следующим образом.

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
    
            <Valve className="org.apache.catalina.valves.RemoteIpValve"
                   internalProxies="127.0.0.1"
                   remoteIpHeader="x-forwarded-for"
                   remoteIpProxiesHeader="x-forwarded-by"
                   protocolHeader="x-forwarded-proto" />
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Установите Nginx

    Rocky Linux 8.5 поставляется с последней стабильной версией Nginx. Установите его с помощью следующей команды.

    $ sudo dnf module install nginx:1.20
    

    Проверьте установку.

    $ nginx -v
    nginx version: nginx/1.20.1
    

    Включите службу Nginx.

    $ sudo systemctl enable nginx
    

    Создайте и откройте файл /etc/nginx/conf.d/guacamole.conf для редактирования.

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

    Вставьте в него следующий код.

    server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  guacamole.example.com;
    
        access_log  /var/log/nginx/guacamole.access.log;
        error_log   /var/log/nginx/guacamole.error.log;
        
        # SSL
        ssl_certificate      /etc/letsencrypt/live/guacamole.example.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/guacamole.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/guacamole.example.com/chain.pem;
        ssl_session_timeout  5m;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        resolver 8.8.8.8;
    
        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;
          client_max_body_size 1g;
          access_log off;
      }
    }
    # enforce HTTPS
    server {
        listen       80;
        listen       [::]:80;
        server_name  guacamole.example.com;
        return 301   https://$host$request_uri;
    }
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.

    Откройте файл /etc/nginx/nginx.conf для редактирования.

    $ sudo nano /etc/nginx/nginx.conf
    

    Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

    server_names_hash_bucket_size  64;
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Проверьте синтаксис файла конфигурации Nginx.

    $ sudo nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    Исправьте разрешение SELinux, чтобы позволить Nginx устанавливать сетевые подключения.

    $ sudo setsebool -P httpd_can_network_connect 1
    

    Запустите службу Nginx, чтобы включить новую конфигурацию.

    $ sudo systemctl start nginx
    

    Перезапустите сервер Tomcat, чтобы применить изменение конфигурации.

    $ sudo systemctl restart tomcat
    

    Шаг 10 — Доступ к гуакамоле

    Откройте URL-адрес https://guacamole.example.com в своем браузере, и вы увидите следующий экран.

    Введите guacadmin в качестве имени пользователя и guacadmin в качестве пароля и нажмите Войти, чтобы продолжить.

    Создайте нового пользователя-администратора

    Вы должны создать нового пользователя и удалить существующего пользователя в целях безопасности. Для этого нажмите guacadmin в правом верхнем углу и выберите меню «Настройки» в раскрывающемся меню.

    Перейдите на вкладку «Пользователи» и нажмите кнопку «Новый пользователь», чтобы начать.

    Введите свои данные и отметьте все разрешения.

    Нажмите Сохранить, когда закончите. Выйдите из системы под пользователем guacadmin и снова войдите в систему, используя только что созданного пользователя.

    Вернитесь к экрану пользователей. выберите пользователя guacadmin для редактирования и нажмите кнопку «Удалить» внизу, чтобы удалить пользователя.

    Шаг 11 - Как использовать гуакамоле

    В нашем руководстве мы покажем вам, как подключиться к серверу с использованием протокола SSH.

    Перейдите в меню «Настройки» гуакамоле и выберите «Подключения». На экране «Подключения» нажмите кнопку «Новое подключение».

    Выберите имя для подключения и выберите SSH в качестве протокола в раскрывающемся меню.

    В разделе «Параметры» введите IP-адрес вашего сервера в качестве имени хоста, 22 в качестве порта (или, если у вас есть собственный SSH-порт, используйте его) и свое имя пользователя. Если вы используете аутентификацию на основе пароля, введите пароль пользователя или вставьте закрытый ключ. Введите парольную фразу для закрытого ключа, если вы его используете.

    Если вы хотите включить какие-либо дополнительные настройки, сделайте это. Щелкните Сохранить, чтобы завершить добавление соединения.

    Вернитесь на панель инструментов и щелкните имя подключения в разделе «Все подключения», и вы попадете в терминал SSH.

    Заключение

    На этом мы завершаем наше руководство по установке и использованию Apache Guacamole для создания SSH-соединения на сервере на базе Rocky Linux 8. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.