分享免费的编程资源和教程

网站首页 > 技术教程 正文

通用的无客户端远程桌面: Guacamole介绍与实践

goqiw 2025-03-17 18:03:58 技术教程 2 ℃ 0 评论

1 guacamole简介

堡垒机实现中通常需要对SSH,RDPVNC的支持,可能还需要Telnet等等,这么多的协议需要实现,工作量可想而知。

众所周知,计算机世界里的事是没有一个抽象层不能解决的,如果有,那就两层。

我们今天的抽象层即是Guacamole


Guacamole是一种无客户端的远程桌面协议,安装Guacamole服务后只需要浏览器便可接入多种远程桌面信息,如RDP、VNC和SSH等。Guacamole对远程桌面协议的封装,为堡垒机(如OneTerm)的实现提供了极大的便利。

有了这个利器,对于SSH,RDP,VNC等等协议我只想说四个字

2 guacamole架构

1) 核心组件

Guacamole的架构设计主要分为两个核心组件:Guacamole服务器端(通常简称为"guacamole")和guacd守护进程。这两个组件通过Guacamole协议相互通信,提供了一个无需客户端软件、基于Web的远程桌面访问解决方案。

  • Guacamole服务器端(guacamole)

Guacamole服务器端是系统的前端部分,基于Web的应用程序,负责处理用户通过浏览器发起的远程桌面会话请求,主要功能如下:

用户交互:提供用户界面,接收用户的登录信息和远程桌面访问请求。

会话管理:处理用户会话,包括身份验证和授权。

数据转发:将用户的输入(如键盘和鼠标事件)转发给guacd守护进程,并将远程桌面的屏幕更新、鼠标移动和其他事件从guacd接收后,转换为适合Web浏览器显示的格式。

Guacamole服务器端通常部署为一个Web应用程序,运行在支持Servlet的Web服务器上,如Apache Tomcat。

  • guacd守护进程

guacd是Guacamole架构的核心组件,负责底层的数据处理和协议转换。它是一个独立的后台进程,执行以下关键功能:

协议转换:作为远程桌面协议(如RDP、VNC、SSH等)与Guacamole协议之间的桥梁,负责将用户的操作转换为远程系统能理解的命令,同时将远程系统的响应转换回Guacamole协议。

会话管理:管理所有远程桌面会话的实际连接,包括启动、维护和关闭会话。

数据传输:处理图形界面更新、鼠标和键盘事件的传输。

guacd通过监听TCP端口等待Guacamole服务器端的连接和请求。每个远程桌面会话由guacd单独处理,以保证稳定性和安全性。

2)guacamole协议

guacamole协议是串联client和server和纽带,其格式为

 OPCODE,ARG1,ARG2,ARG3,...;

协议中每一项通过“,”分割。第一项OPCODE为指令,剩余项为该指令的参数。以“;”结尾。每一项组成格式如下

LENGTH.VALUE

每项以“.”分割。LENGTH为数字,表示VALUE的长度,VALUE为实际参数值。

如下为设置窗口大小的指令

 4.size,1.0,4.1024,3.768;

3 guacamole连接

guacamole连接的创建类似一种协商过程

  1. 用户通过select开启协商过程,参数为要使用的远程桌面协议
 6.select,3.vnc;

2. guacd加载远程桌面协议并返回需要用户协商的字段

 4.args,13.VERSION_1_1_0,8.hostname,4.port,8.password,13.swap-red-blue,9.read-only;

3.下一步用户需要发送支持的audio video等参数

 4.size,4.1024,3.768,2.96;

4. 用户解析第二步获取的需要协商的字段并填充值,使用connect命令发送到guacd,这些值按顺序填充,如果没有设置则为0。

 7.connect,13.VERSION_1_1_0,9.localhost,4.5900,0.,0.,0.;

5. 收到connect命令后,guacd会真正连接目标机器,如果成功则将结果通过ready返回,其中包含唯一的connectionid,否则返回错误。

6. 之后就可以完成的连接了

4 OneTerm中的实战

OneTerm的实现实际上取代了架构中server内的guacamole部分。其主要职责即为接收web段连接请求,连接guacd,作为中间人进行消息转发。

但是OneTerm除了转发实现了更多功能,如支持网关转发,这样guacd就可以随意部署,内网机器可通过网关访问。

支持空闲超时自动关闭,接入时间检测等,让你的机器接入更加安全。

同时支持管理员实时监控事后回放审计在线连接中断,管理能力更强。

更多详情可访问OneTerm开源地址:
https://github.com/veops/oneterm

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表