И, снова, вернусь ка я (Олло Александр aka ekzorchik) к guacamole, но прошлый опыт хоть и бы но был как бы выразится не совсем удачным.

Guacamole — сервис для удаленное управления система (RDP,VNC,Telnet,SSH) через браузер.

Да работало, но порой не совсем корректно, но работало.

Тут один подписчик «Hatun» указал что заметку «Как выполнять SSH команды через Zabbix Server 4.4» , если мониторить хосты (рабочие станции) через zabbix и на эти хосты установить например tightvnc. Дополнительно поднять сервис guacamole (позволяет в браузере подключаться к рабочим станциям по vnc, ssh, rdp вроде). Можно будет с генерировать конфиг для каждого хоста на подключение по vnc. Затем в карте zabbix на каждый объект хоста можно будет применить данный урл на просмотр или управление и тут же в браузере подключиться к пк.

Шаг №1: Систему Ubuntu 18.04 Server разворачиваю через сервис FOG Project на тестовый полигон гипервизора Debian 10 + Proxmox 6

Шаг №2: После подготавливаю систему к последующему использования путем скачивания скрипта настройки со своего Mercurial сервиса и запуска его:

ekzorchik@srv-bionic:~$ hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject

ekzorchik@srv-bionic:~$ sudo ./dproject/default

Шаг №3: Устанавливаю базу данных, пользователя и пароль под сервис guacamole:

ekzorchik@srv-bionic:~$ sudo apt-get install mysql-server mysql-client -y

ekzorchik@srv-bionic:~$ sudo mysqladmin -u root password 712mbddr@

ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "create database db_guacamole character set utf8"

ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "create user 'us_guacamole'@'localhost' identified by '612mbddr@'"

ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "grant all on db_guacamole.* to 'us_guacamole'@'localhost';"

Шаг №4: Установку можно производить, как скриптом с сайта установщика, но кто говорит что не может в одночасье испариться или автор внесет в него какие-либо изменения и Вы не сможете это поправить. Так что мой вариант разобрать все сами с самого основания до реализации.

ekzorchik@srv-bionic:~$ sudo apt-get install -y libjpeg-turbo8-dev build-essential libcairo2-dev libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev mysql-common mysql-utilities libmysql-java freerdp-x11 freerdp2-dev libwebsockets-dev tomcat8 gcc-6 -y

ekzorchik@srv-bionic:~$ java --version

openjdk 11.0.6 2020-01-14

OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)

OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode, sharing)

Шаг №5: Скачиваю самую последнюю версию пакета guacamole-server на 29.02.2020, распаковываю и устанавливаю:

ekzorchik@srv-bionic:~$ wget http://apache-mirror.rbc.ru/pub/apache/guacamole/1.1.0/source/guacamole-server-1.1.0.tar.gz

ekzorchik@srv-bionic:~$ tar zxf guacamole-server-1.1.0.tar.gz

ekzorchik@srv-bionic:~$ sudo mkdir -p /etc/guacamole/lib

ekzorchik@srv-bionic:~$ sudo mkdir -p /etc/guacamole/extensions

ekzorchik@srv-bionic:~$ cd guacamole-server-1.1.0/

ekzorchik@srv-bionic:~/guacamole-server-1.1.0$

ekzorchik@srv-bionic:~/guacamole-server-1.1.0$ sudo ./configure --with-init-dir=/etc/init.d/

------------------------------------------------

guacamole-server version 1.1.0

------------------------------------------------

Library status:

freerdp2 ............ yes

pango ............... yes

libavcodec .......... 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/lib/x86_64-linux-gnu/freerdp2

Init scripts: /etc/init.d/

Systemd units: no

Type "make" to compile guacamole-server.

ekzorchik@srv-bionic:~/guacamole-server-1.1.0$

ekzorchik@srv-bionic:~/guacamole-server-1.1.0$ sudo make -j$((`nproc`+1))

ekzorchik@srv-bionic:~/guacamole-server-1.1.0$ sudo make install

ekzorchik@srv-bionic:~/guacamole-server-1.1.0$ sudo ldconfig

ekzorchik@srv-bionic:~/guacamole-server-1.1.0$ sudo systemctl enable guacd

ekzorchik@srv-bionic:~/guacamole-server-1.1.0$ sudo systemctl start guacd

ekzorchik@srv-bionic:~/guacamole-server-1.1.0$ cd ~

Шаг №6: Скачиваю самую последнюю версию пакета guacamole-client (уже откомпилированную) на 29.02.2020 и устанавливаю:

ekzorchik@srv-bionic:~$ wget http://apache.mirror.iweb.ca/guacamole/1.1.0/binary/guacamole-1.1.0.war

ekzorchik@srv-bionic:~$ sudo mv guacamole-1.1.0.war /etc/guacamole/guacamole.war

ekzorchik@srv-bionic:~$ sudo ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/

ekzorchik@srv-bionic:~$ sudo systemctl restart tomcat8

ekzorchik@srv-bionic:~$ sudo systemctl restart guacd

Шаг №7: Скачиваю коннектор связывающий guacamole + mysql:

ekzorchik@srv-bionic:~$ wget http://apache.mirror.iweb.ca/guacamole/1.1.0/binary/guacamole-auth-jdbc-1.1.0.tar.gz

ekzorchik@srv-bionic:~$ tar zxf guacamole-auth-jdbc-1.1.0.tar.gz

ekzorchik@srv-bionic:~$ sudo cp guacamole-auth-jdbc-1.1.0/mysql/guacamole-auth-jdbc-mysql-1.1.0.jar /etc/guacamole/extensions/

Шаг №8: Настраиваю Guacamole:

ekzorchik@srv-bionic:~$ sudo bash -c "echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat8"

ekzorchik@srv-bionic:~$ cat /etc/default/tomcat8 | grep -v "^$\|#"

TOMCAT8_USER=tomcat8

TOMCAT8_GROUP=tomcat8

JAVA_OPTS="-Djava.awt.headless=true -XX:+UseConcMarkSweepGC"

GUACAMOLE_HOME=/etc/guacamole

ekzorchik@srv-bionic:~$

ekzorchik@srv-bionic:~$ sudo nano /etc/guacamole/guacamole.properties

mysql-hostname: localhost

mysql-port: 3306

mysql-database: db_guacamole

mysql-username: us_guacamole

mysql-password: 612mbddr@

ekzorchik@srv-bionic:~$ sudo systemctl restart tomcat8

ekzorchik@srv-bionic:~$ cat guacamole-auth-jdbc-1.1.0/mysql/schema/*.sql | sudo mysql -u root -p712mbddr@ db_guacamole

mysql: [Warning] Using a password on the command line interface can be insecure.

ekzorchik@srv-bionic:~$ sudo systemctl restart guacd

Шаг №9: Открываю браузер и авторизуюсь с дефолтными логин и пароль заложенными в сервис по умолчанию:

ekzorchik@srv-bionic:~$ hostname -I

172.33.33.30

http://IP&DNS:8080/guacamole/ && http://172.33.33.30:8080/guacamole

Но увы получаю ошибку с текстом по центру страницы:

"An error has occurred and this action cannot be completed. If the problem persists, please notify your system administrator or check your system logs."

Анализирую почему не запускается

http://172.33.33.30:8080/

Проверяю, Tomcat 8 работает

Смотрю логи tomcat8:

ekzorchik@srv-bionic:~$ sudo tail -f /var/log/tomcat8/catalina.out
### Error querying database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
### The error may exist in org/apache/guacamole/auth/jdbc/user/UserMapper.xml
### The error may involve org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne
### The error occurred while executing a query
### Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
^C
ekzorchik@srv-bionic:~$
ekzorchik@srv-bionic:~$ sudo ln -sf /usr/share/java/mysql-connector-java.jar /etc/guacamole/lib/
ekzorchik@srv-bionic:~$ sudo systemctl restart guacd
ekzorchik@srv-bionic:~$ sudo systemctl restart tomcat8

После на странице с ошибкой http://172.33.33.30:8080/guacamole нажимаю клавишу F5 и вот оно окно авторизации:

Окно авторизации в Apache Guacamole

Авторизуюсь:

  • Default login: guacadmin
  • Default password: guacadmin

и нажимаю «Вход», оказываю в столь привычном ранее интерфейсе (минимализм)

Guacamole успешно установлен и я авторизовался (минимализм да и только)

Отлично. Я авторизован.

Итого в рамках этой заметки я установил самую последнюю версия сервиса через который можно взаимодействовать с другими системами через браузер посредством подключений по SSH, Telnet, RDP, VNC. О том как это сделать я поведую в последующих заметках от и до, почему я все записываю от и до — я так запоминаю лучше, конспектирую можно сказать. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.