一、安装 Guacamole(基于 Docker)
1. 创建数据库容器
docker run -d --name guacamoledb \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=guacdb \
-e MYSQL_USER=guacuser \
-e MYSQL_PASSWORD=guacpass \
mysql:5.7
2. 生成并初始化数据库
# 生成初始化 SQL 文件
docker run --rm guacamole/guacamole \
/opt/guacamole/bin/initdb.sh --mysql > initdb.sql
# 将 SQL 文件复制到数据库容器
docker cp initdb.sql guacamoledb:/docker-entrypoint-initdb.d/initdb.sql
# 执行 SQL 初始化(根据环境选择、两种方式任选其一)
docker exec -i guacamoledb bash -c \
'mysql -uroot -prootpass guacdb </docker-entrypoint-initdb.d/initdb.sql'
docker exec -i guacamoledb mysql -uroot -prootpass guacdb < initdb.sql
3. 启动 Guacamole 服务
创建录制存储目录并配置权限
# 创建录制文件存储目录
mkdir -p ./guacamole/recordings
chmod 755 ./guacamole/recordings
# 启动 guacd 代理服务
docker run -d --name guacd --restart=always guacamole/guacd
# 启动 Guacamole Web 服务
docker run -d --name guacamole --restart=always \
-p 8080:8080 \
--link guacd:guacd \
--link guacamoledb:mysql \
-e MYSQL_DATABASE=guacdb \
-e MYSQL_USER=guacuser \
-e MYSQL_PASSWORD=guacpass \
-v ./guacamole:/etc/guacamole \
guacamole/guacamole
4. 配置录制参数
在 /guacamole/guacamole.properties 文件中添加以下配置:
# 启用会话录制
recording-search-path: /recordings
recording-name-format: ${GUAC_DATE}-${GUAC_TIME}-${GUAC_USERNAME}-${GUAC_CONNECTION}
enable-session-recording: true
5. 访问 Guacamole
浏览器访问:
http://localhost:8080/guacamole
默认账号密码:guacadmin / guacadmin
二、安装 TightVNC Server(Windows)
1. 下载安装
- 官网地址:www.tightvnc.com/download.ph…
- 下载 64-bit 安装包,双击运行。
- 安装类型选择 Custom,仅勾选 TightVNC Server,然后一路 Next。
2. 设置访问密码
安装最后一步会提示设置 VNC 密码,请牢记,后续远程连接需使用。
3. 启动服务
-
图形方式:系统托盘出现 “V” 图标,右键 → Start TightVNC Server。
-
命令方式(管理员 CMD):
"%ProgramFiles%\TightVNC\tvnserver.exe" -start
默认使用端口 5900(桌面号
:0),可在 Configuration 中修改为固定端口,并勾选 “Start server on Windows startup” 实现开机自启。
4. 配置防火墙
- 打开 Windows Defender 防火墙 → 允许应用通过防火墙。
- 勾选 TightVNC Server 的专用和公用网络访问权限。
- 若修改了默认端口,需手动放行对应 TCP 端口。
三、Windows 关闭 Ctrl + Alt + Del 登录提示
操作步骤(管理员权限):
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v DisableCAD /t REG_DWORD /d 1 /f
设置值为
1表示禁用 Ctrl + Alt + Del,重启后生效。
四、在 Guacamole 里添加 VNC 连接(Windows 桌面)
前提:
① 已完成上文 “一、安装 Guacamole” ;
② 已完成 “二、安装 TightVNC Server” 并确认 IP:5900 能在局域网用 VNC-Viewer 正常连接。
1. 登录 Guacamole 管理界面
浏览器访问 http://<Guacamole-IP>:8080/guacamole
默认账号 guacadmin / guacadmin
2. 创建新连接(Connections → New Connection)
| 字段 | 填写值 | 备注 |
|---|---|---|
| Name | Win10-VNC | 任意英文名 |
| Protocol | VNC | 下拉选择 |
| Hostname | 192.168.x.x | Windows 主机 IP |
| Port | 5900 | 与 TightVNC 监听端口一致 |
| Password | (刚才设置的 VNC 密码) | 明文保存,Guacamole 会自动提交 |
| Color depth | 按需选 24/32 位 | 默认即可 |
| Cursor | Remote | 本地光标更流畅 |
会话录制配置(在连接设置中找到录制相关选项):
- Recording path:
${HISTORY_PATH}/${HISTORY_UUID} - Recording name:
${GUAC_DATE}-${GUAC_TIME} - Automatically create recording path: ✓ 勾选
其余保持默认,Save 即可。
3. 授权给用户
同一页面切到 Permissions → 把 guacadmin(或新建用户)拖到 "Current users" → Update。
4. 立即访问
回到 Home → 点击刚创建的 Win10-VNC 卡片 → 秒进 Windows 桌面。
五、会话录制管理
1. 查看录制文件
录制文件保存在宿主机的 /guacamole/recordings 目录下,按日期和时间自动命名。
2. 播放录制文件
在 Guacamole 管理界面中:
- 进入 "History" → "Active Sessions"
- 找到已完成的会话,点击 "Play" 按钮即可在浏览器中播放录制
3. 录制文件管理
# 查看录制文件列表
ls -la /guacamole/recordings/
# 定期清理旧录制文件(例如保留30天)
find /guacamole/recordings/ -type f -mtime +30 -delete
六、常见扩展场景速配
| 场景 | 需改协议 | 关键参数 | 额外说明 |
|---|---|---|---|
| Windows RDP | Protocol=RDP | Hostname、Port=3389、Username、Password、Security=NLA | 目标机需开远程桌面、防火墙放行 3389 |
| Linux SSH | Protocol=SSH | Hostname、Port=22、Username、Private-key 或 Password | 私钥可粘贴到 Private key 文本框 |
| Linux VNC | Protocol=VNC | 同上第四节 | 常见端口 5901(桌面:1) |
| 文件传输 | RDP 协议下自动可用 | 在 Settings 里启 Drive 映射 | 会在远程 *\TSCLIENT* 看到宿主机目录 |
| 多用户/LDAP | 需改 guacamole.properties | 官方镜像支持 LDAP、CAS、OpenID 等扩展 | 挂载新配置文件后重启容器即可 |
六、一键备份 & 升级建议
-
数据库备份
docker exec guacamoledb mysqldump -uroot -prootpass guacdb > guac_backup.sql -
升级镜像
docker pull guacamole/guacamole docker stop guacamole && docker rm guacamole # 用同一命令重新 run(第四节步骤 3)即可,数据在库内无损
七、排障 3 秒表
| 现象 | 90% 原因 | 秒解 |
|---|---|---|
| 黑屏/连不上 VNC | Windows 防火墙没放行 5900 | 防火墙加规则 |
| Guacamole 报 “Connection closed” | VNC 密码填错 / 端口错 | 重新编辑连接 |
| RDP 报 “NLA failed” | 账号或密码错 / 目标机未开远程 | 检查账号、开远程、关 NLA 可选 |
| 页面 404 | 地址没加 /guacamole | 补全路径 |
至此, “Guacamole 安装 → VNC 接入 → RDP/SSH 扩展 → 备份排障” 全流程闭环完成。