【工具分享】另一个免费开源的远程桌面服务-Apache Guacamole

Apache Guacamole 的部署方法与原理说明

这是一份面向工程实践的完整部署指南,包括原理、环境准备、部署方式(Docker与手动安装)、多用户访问配置、远程协议支持(RDP/VNC/SSH)以及公网访问设置。


🧠 一、Apache Guacamole 简介与工作原理

Apache Guacamole 是一个 无客户端的远程桌面网关(Remote Desktop Gateway) ,支持通过 网页浏览器直接访问 RDP、VNC、SSH 等远程主机,无需在客户端安装任何插件或软件。

它的核心由三部分组成:

组件 作用 部署位置
guacd 协议代理守护进程,负责与远程主机通信(VNC/RDP/SSH) 后端服务器
guacamole.war Web应用(Tomcat),负责网页界面和身份验证 Web服务器
数据库(MySQL/PostgreSQL) 存储用户、连接配置、权限信息 可同机或远程部署

🧩 工作流程:

  1. 用户访问 Web 界面(通过浏览器)。
  2. Guacamole Server(guacd)根据数据库配置建立与目标主机的远程连接。
  3. Web 界面通过 WebSocket 与 guacd 交互,实现远程桌面画面传输与输入事件中继。

⚙️ 二、系统环境准备

建议使用 Ubuntu 20.04+ 或 CentOS 7/8+,并确保系统满足以下条件:

软件 版本建议 说明
Java JDK 11+ 运行 guacamole.war
Tomcat 9+ Web容器
MySQL/PostgreSQL 最新稳定版 用户与连接配置
Docker(推荐) 20+ 一键部署方式
防火墙 已开放 8080、4822、22、3389、5900 端口 分别为Web、guacd、SSH、RDP、VNC端口

🚀 三、部署方式一:Docker 一键部署(推荐)

Docker 是最简洁、可移植性最强的部署方式。

1️⃣ 拉取镜像

bash 复制代码
docker pull guacamole/guacd
docker pull guacamole/guacamole
docker pull mysql:8.0

2️⃣ 启动 MySQL 数据库

bash 复制代码
docker run --name guac-mysql -e MYSQL_ROOT_PASSWORD=123456 \
  -e MYSQL_DATABASE=guacamole_db -e MYSQL_USER=guacuser -e MYSQL_PASSWORD=guacpass \
  -d mysql:8.0

3️⃣ 初始化数据库结构

下载 SQL 初始化文件:

bash 复制代码
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
docker cp initdb.sql guac-mysql:/initdb.sql
docker exec -it guac-mysql bash -c "mysql -u root -p123456 guacamole_db < /initdb.sql"

4️⃣ 启动 guacd

bash 复制代码
docker run --name guacd -d guacamole/guacd

5️⃣ 启动 guacamole Web 服务

bash 复制代码
docker run --name guacamole --link guacd:guacd --link guac-mysql:mysql \
  -e MYSQL_HOSTNAME=mysql -e MYSQL_PORT=3306 \
  -e MYSQL_DATABASE=guacamole_db -e MYSQL_USER=guacuser -e MYSQL_PASSWORD=guacpass \
  -e GUACD_HOSTNAME=guacd -e GUACD_PORT=4822 \
  -p 8080:8080 -d guacamole/guacamole

6️⃣ 访问 Web 页面

浏览器访问:

复制代码
http://<你的服务器IP>:8080/guacamole/

默认账号:

复制代码
用户名:admin
密码:guacadmin

🛠 四、部署方式二:手动安装部署(Linux)

1️⃣ 安装依赖

bash 复制代码
sudo apt update
sudo apt install -y build-essential libcairo2-dev libjpeg-turbo8-dev libpng-dev \
libtool-bin libossp-uuid-dev freerdp2-dev libvncserver-dev libssh2-1-dev \
libtelnet-dev libssl-dev libvorbis-dev libwebp-dev tomcat9

2️⃣ 安装 guacd

bash 复制代码
wget https://downloads.apache.org/guacamole/1.5.5/source/guacamole-server-1.5.5.tar.gz
tar -xzf guacamole-server-1.5.5.tar.gz
cd guacamole-server-1.5.5
./configure --with-init-dir=/etc/init.d
make
sudo make install
sudo ldconfig
sudo systemctl enable guacd
sudo systemctl start guacd

3️⃣ 部署 Web 应用

bash 复制代码
wget https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-1.5.5.war -O /var/lib/tomcat9/webapps/guacamole.war

4️⃣ 配置数据库

安装 MySQL 并导入初始化 SQL 文件(步骤同上)。

编辑 /etc/guacamole/guacamole.properties

bash 复制代码
guacd-hostname: localhost
guacd-port: 4822
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacuser
mysql-password: guacpass

创建软链接:

bash 复制代码
ln -s /etc/guacamole /usr/share/tomcat9/.guacamole

重启服务:

bash 复制代码
sudo systemctl restart tomcat9
sudo systemctl restart guacd

🌐 五、公网访问配置

  1. 防火墙放行 8080 端口

    bash 复制代码
    sudo ufw allow 8080
  2. 使用 Nginx 反向代理(推荐)

    nginx 复制代码
    server {
        listen 80;
        server_name yourdomain.com;
    
        location / {
            proxy_pass http://127.0.0.1:8080/guacamole/;
            proxy_buffering off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $http_connection;
            proxy_cookie_path /guacamole/ /;
        }
    }
  3. 申请 HTTPS 证书(Let's Encrypt)

    bash 复制代码
    sudo certbot --nginx -d yourdomain.com

👥 六、多用户与权限管理

Guacamole 默认数据库中可配置:

  • 用户(User)
  • 连接(Connection)
  • 权限(User Permission / Connection Permission)

在 Web 管理界面可直接配置:

  • 为每个用户分配特定的远程主机访问权限;
  • 支持 LDAP / CAS / OpenID 集成;
  • 支持自定义主题与登录界面。

🧩 七、支持的远程协议与配置示例

协议 端口 说明
RDP 3389 Windows 远程桌面
VNC 5900 Linux 图形桌面
SSH 22 命令行远程
Telnet 23 简易终端

🖥️ 添加 Windows RDP 示例:

在 "Connections → New Connection":

复制代码
Name: Windows10
Protocol: RDP
Hostname: 192.168.1.100
Port: 3389
Username: Administrator
Password: 123456

🧱 八、原理总结

Apache Guacamole 的核心是:

  • guacd:协议转发器;
  • guacamole.war:Web UI + WebSocket 通信;
  • MySQL:存储配置;
  • Browser:通过 WebSocket 接收远程桌面图像流。

通信流程:

复制代码
Browser ⇄ Tomcat(guacamole.war) ⇄ guacd ⇄ RDP/VNC/SSH Server

🧭 九、扩展与集成

Guacamole 还支持:

  • REST API / JSON Web Token (JWT) 集成
  • 与企业认证系统(LDAP、Active Directory)结合
  • 多租户远程管理系统
  • 与 MeshCentral、Guacamole Gateway、Nginx Proxy Manager 等协同部署

相关推荐
de之梦-御风4 分钟前
【电视投屏】针对“局域网投屏开源项目(Android 手机 ↔ Android TV)
android·智能手机·开源
孙琦Ray16 分钟前
GitHub开源项目日报 · 2026年1月7日 · 本期热门开源全景
单元测试·开源·前端调试·浏览器自动化·知识管理·ai代理·跨语言序列化
墨染天姬22 分钟前
【AI】OCR开源模型排行
人工智能·开源·ocr
de之梦-御风37 分钟前
【视频投屏】最小可用(MVP)局域网投屏”开源项目架构
架构·开源·音视频
云边有个稻草人38 分钟前
大数据时代下的时序数据库选型指南:为何Apache IoTDB成为最优解
大数据·apache·时序数据库·apache iotdb
努力犯错41 分钟前
如何在ComfyUI中配置LTX-2:2026年AI视频生成完整指南
大数据·人工智能·计算机视觉·语言模型·开源·音视频
大犀牛牛44 分钟前
拆解开放签电子签系统“一核多态”的SaaS产品版本管理实战
开源·数字签名·电子合同·电子签章
早日退休!!!1 小时前
基于开源LLVM构建AI编译器的核心工作与原理解析
人工智能·开源
说私域1 小时前
小程序电商运营中“开源AI智能名片链动2+1模式S2B2C商城小程序”对培养“老铁”用户的重要性研究
人工智能·小程序·开源
我的offer在哪里1 小时前
Unsloth,为大语言模型(LLM)微调设计的高效开源框架
人工智能·语言模型·开源