安装 Guacamole 实现nvc远程控制

一、安装 Guacamole(基于 Docker)

1. 创建数据库容器

ini 复制代码
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. 生成并初始化数据库

bash 复制代码
# 生成初始化 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 服务

ini 复制代码
# 启动 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 \
  guacamole/guacamole

4. 访问 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):

    sql 复制代码
    "%ProgramFiles%\TightVNC\tvnserver.exe" -start

默认使用端口 5900 (桌面号 :0),可在 Configuration 中修改为固定端口,并勾选 "Start server on Windows startup" 实现开机自启。

4. 配置防火墙

  • 打开 Windows Defender 防火墙允许应用通过防火墙
  • 勾选 TightVNC Server 的专用和公用网络访问权限。
  • 若修改了默认端口,需手动放行对应 TCP 端口

三、Windows 关闭 Ctrl + Alt + Del 登录提示

操作步骤(管理员权限):

bash 复制代码
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 本地光标更流畅

其余保持默认,Save 即可。

3. 授权给用户

同一页面切到 Permissions → 把 guacadmin (或新建用户)拖到 "Current users"Update

4. 立即访问

回到 Home → 点击刚创建的 Win10-VNC 卡片 → 秒进 Windows 桌面。


五、常见扩展场景速配

场景 需改协议 关键参数 额外说明
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 等扩展 挂载新配置文件后重启容器即可

六、一键备份 & 升级建议

  1. 数据库备份

    bash 复制代码
    docker exec guacamoledb mysqldump -uroot -prootpass guacdb > guac_backup.sql
  2. 升级镜像

    bash 复制代码
    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 扩展 → 备份排障" 全流程闭环完成。

相关推荐
oden19 小时前
AI服务商切换太麻烦?一个AI Gateway搞定监控、缓存和故障转移(成本降40%)
后端·openai·api
李慕婉学姐20 小时前
【开题答辩过程】以《基于Android的出租车运行监测系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·后端·vue
m0_7400437320 小时前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
招风的黑耳21 小时前
我用SpringBoot撸了一个智慧水务监控平台
java·spring boot·后端
Miss_Chenzr21 小时前
Springboot优卖电商系统s7zmj(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
期待のcode21 小时前
Springboot核心构建插件
java·spring boot·后端
2501_9216494921 小时前
如何获取美股实时行情:Python 量化交易指南
开发语言·后端·python·websocket·金融
serendipity_hky1 天前
【SpringCloud | 第5篇】Seata分布式事务
分布式·后端·spring·spring cloud·seata·openfeign
五阿哥永琪1 天前
Spring Boot 中自定义线程池的正确使用姿势:定义、注入与最佳实践
spring boot·后端·python
Victor3561 天前
Netty(16)Netty的零拷贝机制是什么?它如何提高性能?
后端