Apache Guacamole 是一个无客户端的远程桌面网关。它支持标准协议,如 VNC、RDP 和 SSH,甚至还支持k8s、telnet连接。它可以在任何有网络的地方连接上你的服务器和Windows主机。可以同时连接多个终端,并且能够无缝切换。本文采用docker进行部署
部署教程
安装docker
首先需要安装Docker,使用官方一键安装脚本部署或者在线安装,已安装的直接忽略
yum install docker-ce
systemctl start docker.service
systemctl enable docker.service
拉取Guacamole服务器、Guacamole客户端和MySQL的Docker镜像:
docker pull guacamole/guacamole
docker pull guacamole/guacd
docker pull mysql/mysql-server
docker image ls
[root@k8master1 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
guacamole/guacamole latest 36d1e135bac7 4 hours ago 496MB
guacamole/guacd latest fca0b87cc016 27 hours ago 149MB
mysql/mysql-server latest 1d9c2219ff69 9 months ago 496MB
部署mysql
运行docker容器
docker run -p 3306:3306 --name mysqltest -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server
Guacamole程序不会自动初始化数据库,运行MySQL之后需要手动初始化数据库,而Guacamole提供了数据库文件,只需要生成导入就可以了。
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
重命名并将initdb.sql移动到MySQL容器中,后续就能通过这个生成表:
docker cp initdb.sql mysqltest:/guac_db.sql
在MySQL的Docker容器中打开bash终端:
docker exec -it mysqltest bash
使用密码登录。如下所示:
mysql -u root -p123456
创建数据库,以及创建一个新的数据库和用户
CREATE DATABASE guacamole_db;
CREATE USER ‘guacamole_user’@’%’ IDENTIFIED BY ‘guacamole_user_password’;
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO ‘guacamole_user’@’%’;
FLUSH PRIVILEGES;
最后,输入quit退出即可
在bash终端中,使用初始化脚本为新数据库创建数据表:
cat guac_db.sql | mysql -u root -p guacamole_db
到这里,数据库的操作其实都完成了,但是我们还是小心为上。再验证数据表是否已成功添加。如果guacamole数据库中不存在新建的表,请再次确认之前的步骤均已正确执行。
连接数据库
docker exec -it mysqltest bash
mysql -u root -p123456
选择数据库
USE guacamole_db;
查看所有表
SHOW TABLES;
如果正确无误的话,你看到的应该和我的差不多。
mysql> SHOW TABLES;
+---------------------------------------+
| Tables_in_guacamole_db |
+---------------------------------------+
| guacamole_connection |
| guacamole_connection_attribute |
| guacamole_connection_group |
| guacamole_connection_group_attribute |
| guacamole_connection_group_permission |
| guacamole_connection_history |
| guacamole_connection_parameter |
| guacamole_connection_permission |
| guacamole_entity |
| guacamole_sharing_profile |
| guacamole_sharing_profile_attribute |
| guacamole_sharing_profile_parameter |
| guacamole_sharing_profile_permission |
| guacamole_system_permission |
| guacamole_user |
| guacamole_user_attribute |
| guacamole_user_group |
| guacamole_user_group_attribute |
| guacamole_user_group_member |
| guacamole_user_group_permission |
| guacamole_user_history |
| guacamole_user_password_history |
| guacamole_user_permission |
+---------------------------------------+
23 rows in set (0.00 sec)
在Docker中启动guacd:
docker run --name myguacd -d guacamole/guacd
连接容器,以便Guacamole验证存储在MySQL数据库中的凭证:
docker run --name myguacamole --link myguacd:guacd --link mysqltest:mysql -e MYSQL_DATABASE=guacamole_db -e MYSQL_USER=guacamole_user -e MYSQL_PASSWORD=guacamole_user_password -d -p 0.0.0.0:9090:8080 guacamole/guacamole
因为需要三个容器联动,保险起见,我们还是再检查一下
可通过以下命令查看所有正在运行的Docker容器:
[root@k8master1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b9b079cd966 guacamole/guacamole "/opt/guacamole/bin/…" 2 hours ago Up 2 hours 0.0.0.0:9090->8080/tcp myguacamole
22376ea97d95 guacamole/guacd "/bin/sh -c '/opt/gu…" 2 hours ago Up 2 hours (healthy) 4822/tcp myguacd
b5fa8ca1002b mysql/mysql-server "/entrypoint.sh mysq…" 3 hours ago Up 3 hours (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060-33061/tcp mysqltest
[root@k8master1 ~]#
可以看到myguacamole、myguacd和mysqltest等三个容器在后台运行中
请在浏览器中访问localhost:8080/guacamole/
默认的登录账户是guacadmin,默认登录密码guacadmin。登录后应尽快修改登录账户及密码。当然,如果你不是配置在本地,那你就把localhost换成对应的ip地址即可。
成功登录后,选择settings->connections->new connection
新建一个连接,采用ssh协议
配置完成后,选择返回home页面
这是就可以通过浏览器访问需要访问的主机了