部署Guacamole跳板机平台
Apache Guacamole是一个可以通过浏览器访问远程桌面的应用,它无需在访问者界面部署任何软件(clientless),且支持主流的VNC,RDP,SSH等协议。本文主要介绍如何通过华为云stack部署一个Guacamole平台,支持云外的用户进行远程访问。
部署和架构
Guacamole不是一个完全独立的(self-contained)网络应用,它由一个简单轻量的网络应用搭配主要的底层组件构成的。
当用户通过浏览器连接一个Guacamole服务器时,Guacamole client组件通过内置于Guacamole 服务器的webserver提供给用户(servered to users by a webserver within the Guacamole server)。继而这个client使用Guacamole协议通过HTTP连接回Guacamole服务器。
部署着Guacamole server的网络应用(e.g. apache nginx)读取Guacamole 协议并转发给Guacamole原生代理guacd。 这个代理解析请求并代表用户访问远程桌面服务。
Guacamole协议结合guacd服务共同保证了:无论是Guacamole client还是网络应用都无需感知远程桌面的传输协议。
Guacamole协议
网络应用并不明白任何的远程桌面协议,它只需要理解Guacmole协议。这个协议支持远程显示的渲染和事件的传输工作。
作为一个远程展示和交互的协议,Guacmole整合了当前很多的远程桌面协议。向Guacmole添加一个远程桌面协议可以理解为在远程桌面协议(如RDP)和Guacmole协议直接写入一个中介传输层。操作这个中间层和直接操作本地服务并无太大区别。
这个中介层就是guacd
guacd
guacd是Guacamole的核心,它动态的载入对远程桌面协议的支持,并且接受网络应用的指示连接远程桌面。
guacd是一个守护进程,它与Guacmole一起安装并在后台运行并监听网络应用的TCP连接请求。guacd同样不理解具体的远程桌面协议,但是它通过Guacamole协议知道需要调用并且加载相应的协议插件,当客户端插件(client plugin)被加载,它就可以独立于guacd运行并拥有全部的控制权限直到被关闭。
guacd以及所有的客户端插件都依赖于一个公共包libguac,它使得通过Guacamole协议的交流更加的普适化(abstract)。
网络应用
在Guacamole中,用户直接进行交互的部分是网络应用。它依赖于guacd且仅仅提供认证和网络转发等。
安装Guacamole
Guacamole主要分为2个部分:
guacamole-server提供guacd代理以及相关的依赖。
guacamole-client提供servlent容器(通常为Tomcat)需要的client。
安装guacamole-server
guacamole-server包含所有Guacamole所需的原生的,服务器端的组件。libguac是其中一个公共的C包,它包含了所有基础组件的依赖。
安装guacd会创建一个guacd的守护进程,一般推荐设置为开机自动启动。
在安装之前确保预装了C编译器(e.g. gcc)。
这里我们以CentOS7.6来安装部署一个Guacmole服务。
安装依赖
a. 必选依赖
依赖包名称
说明
C