====== Apache Guacamole — 无客户端远程桌面网关 ====== **Apache Guacamole** 是一个开源的远程桌面网关,由 Apache 软件基金会维护。它最核心的特点是**无需在客户端安装任何软件**——只需一个支持 HTML5 的浏览器,即可访问远程桌面和服务器。 官网:[[https://guacamole.apache.org/open-source/]] ===== 主要特点 ===== * **无客户端** — 纯 HTML5 浏览器访问,无需安装 VNC/RDP/SSH 客户端 * **多协议支持** — 内置支持 VNC、RDP、SSH、Telnet 和 Kubernetes * **集中管理** — 通过 Web 界面统一管理所有远程连接 * **认证与授权** — 支持 LDAP、SAML、TOTP 等多种认证方式 * **会话录制** — 可以录制和回放远程会话 * **剪贴板共享** — 在本地和远程之间复制粘贴文本、文件 * **多因子认证** — 支持 TOTP(基于时间的一次性密码) ===== 架构 ===== Apache Guacamole 分为两个核心组件: **guacamole-server** — 使用 C 语言编写,提供高效的协议代理(guacd 守护进程),负责将 VNC、RDP、SSH 等协议转换为 Guacamole 自有协议。 **guacamole-client** — 使用 Java(Servlet)编写,提供 Web 界面和用户管理功能。也是让项目真正「无客户端」的关键层:用户通过浏览器访问 Web 页面,JavaScript 客户端通过 HTTP/WebSocket 与 Java Servlet 通信,再由 guacd 连接到实际的目标服务器。 ===== 部署方式 ===== ==== 传统部署 ==== ```text 用户浏览器 → Nginx → Guacamole Client (Java/Tomcat) → guacd (C) → 目标服务器 (VNC/RDP/SSH) ``` ==== Docker 部署 ==== 官方提供了 Docker 镜像,可快速启动: ```text docker run --name guacd -d guacamole/guacd docker run --name guacamole --link guacd -e MYSQL_HOST=db \ -d guacamole/guacamole ``` 支持 MySQL、PostgreSQL 和 SQL Server 作为后端存储。 ==== Docker Compose ==== 官方 GitHub 仓库提供了完整的 docker-compose 示例,包含 guacd、guacamole、MySQL 三个容器的一键部署方案。 ===== 适用场景 ===== * **VDI(虚拟桌面基础设施)** — 用户通过浏览器访问办公桌面 * **服务器运维** — SSH 堡垒机,替代传统 SSH 客户端 * **教育/培训** — 学员无需安装任何软件即可访问实验环境 * **BYOD(自带设备)** — 员工用自己的设备通过浏览器远程办公 * **客户支持** — 技术支持人员远程访问客户服务器 ===== 优缺点 ===== ^ 优势 ^ 劣势 ^ | 无需安装客户端,开箱即用 | 视频/图形密集型场景性能有限 | | 集中管理所有连接 | WebSocket 连接需要专用端口 | | 开源免费(Apache 2.0 协议) | 大规模部署需额外架构设计 | | 支持多因子认证 | 对 3D/高帧率画面支持一般 | | 活跃的社区和商业支持(Glyptodon Enterprise) | 中文资料相对较少 | ===== 总结 ===== Apache Guacamole 是一个成熟的、生产级的远程桌面网关方案,特别适合**需要统一管理多种远程协议**且**客户端环境不可控**的场景。如果你的团队需要在不同设备上远程访问服务器、桌面,同时又不想在每个设备上都安装客户端软件,Guacamole 是值得优先考虑的免费方案。