Установка и использование удаленного рабочего стола Guacamole в Ubuntu 20.04
Удобство наличия единого места для доступа к вашим серверам — это то, о чем большинство администраторов может подумать о том, чтобы есть в своем основном блюдо каждый божий день. Чтобы удовлетворить эту потребность, в этом руководстве подробно рассказывается о настройке одной такой платформы. К концу этого руководства у нас должен быть установлен рабочий сервер Apache Guacamole, который можно использовать для предоставления одного места для доступа ко всем вашим серверам. Будь то Windows или Linux, Apache Guacamole здесь для вас.
Прежде чем углубиться в суть этого инструмента, было бы хорошо, если бы мы знали, в чем дело? Хорошо, давайте продолжим и демистифицируем этот инструмент. Apache Guacamole — это бесклиентский шлюз удаленного рабочего стола, поддерживающий стандартные протоколы, такие как VNC, RDP и SSH. Благодаря HTML5 , когда Guacamole установлен на сервере, все, что вам нужно для доступа к своим рабочим столам, — это веб-браузер.
Guacamole разделен на две части: guacamole-server, который предоставляет прокси -сервер guacd и связанные библиотеки, и guacamole-client, который предоставляет клиента для обслуживания вашим контейнером сервлетов. В большинстве случаев единственный источник, который вам нужно будет собрать, — это guacamole-server, и загрузки последней версии guacamole.war с веб-сайта проекта будет достаточно, чтобы предоставить клиенту.
Шаг 1: Подготовка сервера
Apache Guacamole имеет множество зависимостей, и на этом этапе мы разберемся с большинством из них. Давайте продвинемся вперед и установим все зависимости, которые потребуются нашему серверу Guacamole, чтобы дышать и жить. Установите их все следующим образом:
sudo apt update
sudo apt install -y gcc vim curl wget g++ libcairo2-dev libjpeg-turbo8-dev libpng-dev \
libtool-bin libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev build-essential \
libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev \
libssl-dev libvorbis-dev libwebp-dev
Установить FreeRDP2
Мы собираемся установить версию FreeRDP2, размещенную в remmina PPA, следующим образом:
sudo add-apt-repository ppa:remmina-ppa-team/freerdp-daily
sudo apt update
sudo apt install freerdp2-dev freerdp2-x11 -y
После того, как все предварительные условия выполнены, теперь у нас есть возможность приготовить основное блюдо, которое включает в себя еще пару шагов, которые мы рассмотрим далее.
Шаг 2. Установите Apache Tomcat
На этом этапе мы собираемся установить контейнер сервлетов Java Apache Tomcat, который будет запускать военный файл Java Guacamole и, таким образом, обслуживать Java-клиент Guacamole. Поскольку он находится на Java, нам нужно сначала установить Java.
sudo apt install openjdk-11-jdk
Как только он будет установлен, вы можете проверить установленную версию
$ java --version
openjdk 11.0.9.1 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
Создать пользователя системы Tomcat
Рекомендуется, чтобы для запуска приложений использовался пользователь в системе, кроме root. Для tomcat мы собираемся создать пользователя, который будет использоваться для запуска приложения tomcat.
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Получить Apache Tomcat
Вы можете получить двоичный дистрибутив Apache Tomcat на официальной странице загрузок Tomcat . На момент написания этого руководства последней стабильной версией была 9.0.41.
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.41/bin/apache-tomcat-9.0.41.tar.gz -P ~
Загрузка будет завершена, и вы приступите к извлечению tar-файла в каталог /opt/tomcat следующим образом:
sudo mkdir /opt/tomcat
sudo tar -xzf apache-tomcat-9.0.41.tar.gz -C /opt/tomcat/
sudo mv /opt/tomcat/apache-tomcat-9.0.41 /opt/tomcat/tomcatapp
Поскольку пользователь tomcat будет запускать Apache Tomcat, нам нужно будет предоставить ему необходимые права на каталог / opt / tomcat. Выполните команду ниже, чтобы это произошло
sudo chown -R tomcat: /opt/tomcat
Затем сделайте все сценарии оболочки в каталоге /opt/tomcat/tomcatapp/bin исполняемыми
sudo chmod +x /opt/tomcat/tomcatapp/bin/*.sh
Затем мы готовы добавить службу Tomcat Systemd, чтобы мы могли легко запускать и останавливать ее, как и другие службы на вашем сервере. Для этого нам нужно будет создать новый файл, а затем заполнить его правильной конфигурацией, как показано ниже.
$ sudo vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat 9 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/opt/tomcat/tomcatapp"
Environment="CATALINA_HOME=/opt/tomcat/tomcatapp"
Environment="CATALINA_PID=/opt/tomcat/tomcatapp/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/tomcatapp/bin/startup.sh
ExecStop=/opt/tomcat/tomcatapp/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
Наш новый файл systemd чистый. Сохраните его, затем перезагрузите демон, чтобы демон SystemD прочитал его.
sudo systemctl daemon-reload
Затем запустите службу
sudo systemctl enable --now tomcat
И кот должен бежать счастливо
$ systemctl status tomcat
● tomcat.service - Tomcat 9 servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-12-18 13:36:34 UTC; 2s ago
Process: 53538 ExecStart=/opt/tomcat/tomcatapp/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 53545 (java)
Tasks: 27 (limit: 2204)
Memory: 137.3M
CGroup: /system.slice/tomcat.service
└─53545 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/to
Tomcat по умолчанию прослушивает порт 8080, и, как вы можете догадаться, нам нужно разрешить доступ к приложению удаленно, разрешив порт на брандмауэре. Это так же просто, как однострочная команда, как показано ниже:
sudo ufw allow 8080/tcp
Шаг 3. Создайте сервер Guacamole из исходников
guacamole-server содержит все встроенные серверные компоненты, необходимые Guacamole для подключения к удаленным рабочим столам. Он предоставляет общую библиотеку C, libguac , от которой зависят все остальные собственные компоненты, а также отдельные библиотеки для каждого поддерживаемого протокола и прокси-демон, guacd, сердце Guacamole.
Загрузите последнюю стабильную версию guacamole-server
wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz -P ~
Распакуйте архив с исходным кодом после загрузки
tar xzf ~/guacamole-server-1.2.0.tar.gz
Перейдите в каталог исходного кода сервера гуакамоле;
cd ~/guacamole-server-1.2.0
Затем выполните сценарий настройки, чтобы проверить, нет ли какой-либо необходимой зависимости, и адаптировать сервер Guacamole к вашей системе.
./configure --with-init-dir=/etc/init.d
Приведенная выше команда приведет к длинной струйке выходных данных. Когда он закончится, вы должны увидеть следующий результат, в котором должно быть положено следующее: RDP, SSH, Telnet и VNC.
guacamole-server version 1.2.0
------------------------------------------------
Library status:
freerdp2 ............ yes
pango ............... yes
libavcodec .......... yes
libavformat.......... no
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 .... no
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.
После этого просто запустите команду make, как указано в последнем сообщении.
make
Дайте ему немного времени, пока он сделает свое дело. По завершении установите сервер гуакамоле следующим образом
sudo make install
Чтобы завершить все это, запустите команду ldconfig, чтобы создать необходимые ссылки и кэшировать самые последние общие библиотеки, найденные в каталоге сервера guacamole.
sudo ldconfig
Обновите systemd, чтобы он нашел службу guacd (прокси-демон Guacamole), установленную в каталоге /etc/init.d/ .
sudo systemctl daemon-reload
После перезагрузки запустите и включите службу guacd.
sudo systemctl start guacd
sudo systemctl enable guacd
И чтобы такое настроение появилось на турбо-лифте, проверьте его состояние.
$ systemctl status guacd
● guacd.service - LSB: Guacamole proxy daemon
Loaded: loaded (/etc/init.d/guacd; generated)
Active: active (running) since Fri 2020-12-18 14:03:06 UTC; 8s ago
Docs: man:systemd-sysv-generator(8)
Process: 76312 ExecStart=/etc/init.d/guacd start (code=exited, status=0/SUCCESS)
Tasks: 1 (limit: 2204)
Memory: 10.1M
CGroup: /system.slice/guacd.service
└─76324 /usr/local/sbin/guacd -p /var/run/guacd.pid
Шаг 4. Установите веб-приложение Guacamole
В развертывании Guacamole задействованы два важных файла: guacamole.war — файл, содержащий веб-приложение, и guacamole.properties — основной файл конфигурации для Guacamole. Рекомендуемый способ настройки Guacamole включает размещение этих файлов в стандартных местах с последующим созданием на них символических ссылок, чтобы Tomcat мог их найти.
guacamole-client содержит все компоненты Guacamole Java и Maven ( guacamole, guacamole-common, guacamole-ext и guacamole-common-js ). Эти компоненты в конечном итоге составляют веб-приложение, которое будет обслуживать клиент HTML5 Guacamole для пользователей, которые подключаются к вашему серверу. Это веб-приложение будет подключаться к guacd , части сервера guacamole, от имени подключенных пользователей, чтобы обслуживать их любой удаленный рабочий стол, к которому они имеют доступ.
Установите клиент Guacamole в Ubuntu 20.04
Клиент Guacamole доступен в виде двоичного файла. Чтобы установить его, просто вытащите его со страницы загрузки двоичных файлов Guacamole, как показано ниже, скопируйте его в каталог /etc/guacamole/ и одновременно переименуйте.
sudo mkdir /etc/guacamole
wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war -P ~
sudo mv ~/guacamole-1.2.0.war /etc/guacamole/guacamole.war
Чтобы установить двоичный файл клиента Guacamole, создайте символическую ссылку клиента Guacamole на каталог веб-приложений Tomcat, как показано ниже;
sudo ln -s /etc/guacamole/guacamole.war /opt/tomcat/tomcatapp/webapps
Шаг 5: Настройте сервер Guacamole
После установки демона сервера Guacamole вам необходимо определить, как клиент Guacamole будет подключаться к серверу Guacamole (guacd) в файле конфигурации /etc/guacamole/guacamole.properties . В этой конфигурации вам нужно просто определить имя хоста сервера Guacamole, порт, файл конфигурации сопоставления пользователей, поставщика аутентификации.
GUACAMOLE_HOME — это имя, присвоенное каталогу конфигурации Guacamole, который по умолчанию находится в /etc/guacamole . Все файлы конфигурации, расширения и т. Находятся в этом каталоге.
Создать переменную среды GUACAMOLE_HOME
echo "GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/default/tomcat
Создайте файл конфигурации /etc/guacamole/guacamole.properties и заполните его, как показано ниже:
$ sudo vim /etc/guacamole/guacamole.properties
guacd-hostname: localhost
guacd-port: 4822
user-mapping: /etc/guacamole/user-mapping.xml
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
После того, как конфигурация станет такой же красивой, как указано выше, сохраните ее и свяжите каталог конфигураций Guacamole с каталогом сервлетов Tomcat, как показано ниже.
sudo ln -s /etc/guacamole /opt/tomcat/tomcatapp/.guacamole
Шаг 6. Настройте метод аутентификации гуакамоле.
Метод проверки подлинности Гуакамоле по умолчанию считывает всех пользователей и подключения из одного файла с именем user-mapping.xml . В этом файле вам необходимо определить пользователей, которым разрешен доступ к веб-интерфейсу Guacamole, серверы для подключения и метод подключения.
Сгенерируйте MD5-хэш паролей для пользователя, которого вы собираетесь использовать для входа в веб-интерфейс пользователя Guacamole. Соответственно замените свой пароль.
$ echo -n StrongPassword | openssl md5
(stdin)= 0f6e4a1df0cf5ee97c2066953bed21b2
Когда ваш пароль будет готов, создайте файл сопоставления пользователей с примерами содержимого, показанными ниже. Вы можете разместить любое имя хоста, имена пользователей и хосты в соответствии с вашей средой.
$ sudo vim /etc/guacamole/user-mapping.xml
<user-mapping>
<!-- Per-user authentication and config information -->
<!-- A user using md5 to hash the password
guacadmin user and its md5 hashed password below is used to
login to Guacamole Web UI-->
<authorize
username="GeeksAdmin"
password="0f6e4a1df0cf5ee97c2066953bed21b2"
encoding="md5">
<!-- First authorized Remote connection -->
<connection name="RHEL 7 Maipo">
<protocol>ssh</protocol>
<param name="hostname">172.25.169.26</param>
<param name="port">22</param>
</connection>
<!-- Second authorized remote connection -->
<connection name="Windows Server 2019">
<protocol>rdp</protocol>
<param name="hostname">10.10.10.5</param>
<param name="port">3389</param>
<param name="username">tech</param>
<param name="ignore-cert">true</param>
</connection>
</authorize>
</user-mapping>
Мы продвигаемся очень хорошо. Как только все будет сделано, перезапустите Tomcat и guacd, чтобы изменения вступили в силу.
sudo systemctl restart tomcat guacd
Если у вас запущен брандмауэр и вы еще не разрешили порты, у вас есть шанс сделать это так же быстро, как показано ниже:
sudo ufw allow 4822/tcp
Шаг 7. Получение веб-интерфейса Guacamole
Пока мы все настроили хорошо, и поэтому мы должны быть готовы получить доступ к приложению, над созданием которого мы так долго работали. Чтобы получить доступ к веб-интерфейсу Guacamole, просто укажите в браузере http://ip-or-domain-name: 8080/ guacamole, и вы увидите экран входа в систему, как показано ниже:
Как видите, подключения, которые мы установили в файле конфигурации, то есть имена серверов, уже загружаются при входе в систему.
Просто нажмите на тот, к которому вы хотите подключиться, и вам будет предложено ввести имя пользователя и пароль, будь то через SSH или RDP, в зависимости от операционной системы.
И если учетные данные верны, вы должны быть допущены на свой сервер
Заключение
Организуйте свою среду и сделайте ее простой в использовании даже для новых пользователей в вашей среде, воспользовавшись преимуществами Apache Guacamole для использования его интересных функций, как вы увидите после установки. Оцените его и воспользуйтесь его гибкостью и удобством, особенно в этот сезон, когда большинство из нас сохранят воспоминания о тех, кто нам небезразличен.