[点晴永久免费OA]Apache Guacamole:一款基于浏览器的开源远程桌面网关,纯 Web 访问无需客户端,支持 RDP、VNC、SSH、Telnet 等主流协议
|
admin
2026年6月18日 15:23
本文热度 68
|
概述
Apache Guacamole 是一款基于浏览器的开源远程桌面网关,纯 Web 访问,无需客户端,支持 RDP、VNC、SSH、Telnet 等主流远程协议
架构分为前端(guacamole-client) 和后端代理(guacd) 两部分,二者分离部署、分工协作
guacamole-web前端
1、作用
• 运行在 Web 容器(Tomcat、Nginx+Jetty 等),提供Web 访问界面• 不直接连接远程主机,所有远程连接请求转发给 guacd 处理• 协议转换:把浏览器 WebSocket 流量转为 Guacamole 私有协议,和 guacd 通信2、核心组件
• 网页 UI:纯 HTML5,任意现代浏览器打开即可远程桌面 / 终端• 认证模块:支持本地账号、LDAP、数据库、CAS、TOTP 二次验证等• 连接管理:保存远程主机地址、端口、账号、协议、参数等配置3、特点
• 无客户端、跨平台、跨终端(电脑 / 平板 / 手机)• 可做统一远程运维入口,集中管理大量服务器 / Windows 主机guacd(Guacamole守护进程)
1、定位
• Guacamole 的后端代理服务,是整个远程连接的真正执行者,独立后台进程2、核心作用
• 监听前端 guacamole-client 的连接请求(默认 TCP 4822 端口)• 解析请求,主动发起 RDP/VNC/SSH/Telnet 到目标远程主机• 完成协议编解码、画面渲染、键鼠 / 剪贴板 / 文件传输转发• 隔离前端与内网主机:外网只访问 Web 前端,guacd 在内网对接设备,提升安全3、关键特性
• 多线程:支持并发多个远程会话,每个会话独立线程• 资源代理:剪贴板共享、文件上传下载、音频、打印机、串口等都由它中转4、端口与运行
• 依赖系统库:libguac、RDP/VNC/SSH 相关协议库整体通信流程(最简链路)
• 浏览器 → 访问 Guacamole Web 前端(client)• client 鉴权通过 → 通过 4822 端口 连接 guacd• guacd → 根据配置,使用 RDP/SSH/VNC 连接目标服务器 / 主机部署(Docker方式)
1、首先下载三个镜像
docker pull guacamole/guacd:latest
docker pull guacamole/guacamole:latest
docker pull postgres:15-alpine
2、生成数据库初始化 SQL,本例子使用postgresql
docker run --rm guacamole/guacamole:latest /opt/guacamole/bin/initdb.sh --postgresql > initdb.sql
3、编辑docker-compose.yml文件,自己设置postgresql账号密码,内容如下:
services:
postgres:
image: postgres:15-alpine
container_name: guacamole-postgres
restart: unless-stopped
environment:
POSTGRES_DB: guacamole_db
POSTGRES_USER: guacamole_user
POSTGRES_PASSWORD: guacamole_pass
volumes:
- pgdata:/var/lib/postgresql/data
- ./initdb.sql:/docker-entrypoint-initdb.d/initdb.sql:ro
guacd:
image: guacamole/guacd:latest
container_name: guacamole-guacd
restart: unless-stopped
guacamole:
image: guacamole/guacamole:latest
container_name: guacamole-web
restart: unless-stopped
ports:
- "8080:8080"
environment:
GUACD_HOSTNAME: guacd
POSTGRESQL_HOSTNAME: postgres
POSTGRESQL_DATABASE: guacamole_db
POSTGRESQL_USER: guacamole_user
POSTGRESQL_PASSWORD: guacamole_pass
depends_on:
- guacd
- postgres
volumes:
pgdata:
4、把initdb.sql 和docker-compose.yml放在同一目录下,然后启动
docker-compose up -d
5、输入http://IP:8080/guacamole 打开页面,输入账号密码登录
默认账号/密码:guacadmin / guacadmin
6、配置连接主机,我这里先创建了连接组,来区分系统类型,如图:
7、然后点击新建连接,输入连接的机器名字、协议,位置就是刚才的组,连接数自定义,如图:
网络位置,填写真正需要连接的主机IP、端口,会话超时时间,认证位置,填写用户名和私钥,如果使用密码认证也可以,页面默认私钥是明文的,因此在服务器上生成私钥的时候要加密,然后在口令位置,输入加密私钥的时候使用的密码,如下:
ssh-keygen -t rsa -f id_rsa -N "强密码" #给私钥加密
注:执行ssh-keygen生成的公钥要添加到authorized_keys中,私钥才能连接
SFTP位置,选择开启,设置个上传文件的目录,如图:
8、点击账户-首页回到页面,可以看到机器信息,如图:
9、点击即可连接机器,如图:
10、默认情况下连接后是全屏的,不能回到主界面了,此时可以按ctrl + alt + shift,如图:
点击上面下拉列表即可回到主界面中,同时可以看到下面的设备位置,就是上一步设置的SFTP的目录,点击设备名,进入到/tmp目录下,此时就可以上传和下载文件了,如图:
阅读原文:https://mp.weixin.qq.com/s/UqS4V_r2RajCHtO3yUn_fA
该文章在 2026/6/18 16:24:15 编辑过