什么是 Apache Guacamole?
Guacamole是一种HTML5 Web应用程序,可使用远程桌面协议(例如VNC或RDP)提供对桌面环境的访问。可使用HTTP或WebSocket通过基于JavaScript的隧道流式传输文本数据,以及一种客户端实现,该实现支持Guacamole协议,并与来自Windows的Guacamole协议流结合使用时可以呈现远程显示。提供了跨浏览器的鼠标和键盘事件,一个XML驱动的屏幕键盘以及具有硬件加速合成功能的同步嵌套层。
guacamole-common-js 是 Apache Guacamole 项目的一部分。Apache Guacamole 是一个无客户端的远程桌面网关,支持 VNC、RDP 和 SSH 协议。guacamole-common-js 是一个 JavaScript 库,提供了与 Guacamole 协议交互的客户端实现,通常用于在浏览器中实现远程桌面访问。
Guacamole 特点
- 无客户端:Guacamole允许从任何地方远程访问一个或多个桌面,而无需安装客户端,这意味着用户不需要在其设备上安装任何额外的软件,只需通过一个支持 HTML5 的浏览器即可访问远程桌面。
- 协议支持:Guacamole 支持多种协议,包括 VNC、RDP、SSH 等。
- 扩展性:通过插件和扩展,可以将 Guacamole 的功能扩展到支持特定的需求。
- 身份验证:支持多种身份验证机制,包括数据库、LDAP、OpenID 等。
Guacamole 的架构
组件划分:
-
Guacamole Client:这是一个基于 HTML5 的客户端,可以在任何支持现代浏览器的设备上运行。用户通过浏览器访问 Guacamole Client,从而与远程桌面交互。
-
Guacamole Server (guacd):这是 Guacamole 的核心代理组件。Guacd 处理与远程桌面的实际连接(如 RDP、VNC、SSH 等协议),并将这些连接转换为可以通过 WebSocket 协议传输的格式,以供 Guacamole Client 使用。
-
Guacamole Protocol:Guacamole 使用自己的协议来在 Guacamole Client 和 guacd 之间传输数据。这种协议设计为可以在高延迟和低带宽条件下高效工作。
-
Guacamole Web Application:这是一个用 Java 编写的应用程序,通常在一个支持 Java Servlet 的应用服务器(如 Tomcat)上运行。它负责用户身份验证、会话管理、连接配置等。
Guacamole是一个提供了基于HTML5 web应用程序的远程桌面代理服务器。通过使用Guacamole服务器,我们很轻松的在浏览器上远程访问Guacamole代理的主机,是一个无客户端远程桌面网关。支持标准协议,如VNC、RDP、SSH。称他为无客户端,是因为没有插件和客户端软件被要求。由于HTML5,一旦Guacamole 被安装到服务端,通过web 浏览器就可以访问你的桌面。
我们可以在浏览器访问Guacamole页面的时候,此时,浏览器会通过HTTP使用Guacamole协议与Guacamole 服务器中的Web服务器进行连接。Guacamole Web应用会从用户的请求中读取Guacamole协议,并将其转发给guacd(本地Guacamole代理)。Guacd根据web 应用转发过来的Guacamole协议来代替用户连接到远程桌面服务器。在Guacamole Web应用与guacd进行通信的时候,两者均不需要知道实际使用的远程桌面协议是什么,即协议不可知性。
Guacd guacd是Guacamole动态支持多种远程桌面协议(这里统称为客户端插件)和基于web连接远程桌面协议的核心. guacd是一个安装在Guacamole上后台运行的守护进程, 等待来自web的连接. guacd也不需要理解特定的远程桌面协议, 一旦客户端插件开始启动, 他和guacd独立运行, 并且拥有和web应用完全的同学权限.
作者:小希学前端
链接:https://juejin.cn/post/7439641786660634675
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。