Guacamole可以同HTML5来代理远程桌面协议(如: VNC, RDP, Telnet, SSH)
官网: http://guac-dev.org/
其由许多部件组成的轻量级web应用程序,大部分的功能依靠Guacamole的底层组件>来完成。
用户通过浏览器连接到Guacamole的服务端。Guacamole的客户端是用JavaScript编写的,Guacamole server通过web容器(比如tomcat)把服务提供给用户。一旦加载,客户端通过http承载着Guacamole自己的定义的协议与服务端通信。
部署在Guacamole server这边的Web应用程序,解析到的Guacamole protocal,就传给Guacamole的代理guacd(中间层),这个代理(guacd)实际上就是解析Guacamole protocal,替用户连接到远程机器
用户通过浏览器连接到Guacamole的服务端, Guacamole通过JS写的客户端是为用户提供服务, 服务端和客户端的通信是基于HTTP的私有协议; web应用就是将浏览器客户端的内容接受处理并转发guacd, 就是一个本地代理, Guacamole的协议和提供给guacd的协议是无关的, Guacamole的客户端和web应用不需要知道具体运行的什么协议.
web应用完全不需要理解远程桌面协议, 但必须要理解Guacamole的协议(远程显示渲染和事件传输),
而作为一个远程显示和交互协议, Guacamole是现有远程连接协议的集合. 想让Guacamole支持一个新的协议 只需要下一个"翻译"协议的中间层即可. 这个中间件就是guacd
web应用是直接和用户交付的组件.web应用不依赖远程桌面协议, 而依赖guacd; web应用的唯一左右就是提供一个漂亮的web界面和认证.
目前主要用java来写的web应用, 但它可以基于任何语言重写; Guacamole的重点在于API.
Guacamole现在是一个通用的远程桌面网关, 但并不绝对. Guacamole开始于一个纯净的基于文本的JS写的名字叫做ReaMint的telnet客户端, 这个主意起源于演示, 之所以出名主要是由于他是纯JS写的.
RealMint的隧道主要是用PHP写的, 相对于Guacamole的HTTP的隧道, RealMint的隧道只是简单的长轮询, 并且效率低下. 但是RealMint的键盘部分实现的很好, 目前吸收到了Guacamole中, 但也仅此而已了.
一旦开发者掌握了HTML5的canvas标签, 并且看到他已经被Firefox和Chrome支持了, 就有人想做个JS的的VNC客户端的POC.
这个客户端是纯JS实现的,客户端用的JAVA, 通过将VNC翻译为XML版的. 该客户端的开发是基于VNC本身功能驱动的, 开发范围限制于将一个单独的连接转发给一组用户. 虽然看法速度不是很快,但是足够POC和项目需求了. 在Guacamole官网是可以找到的。
开发一个基于文本协议的快速协议即可代表多个远程管理协议. 整个系统以后台运行形式重新构建了, 项目的范围扩展到相对于一个快速的HTML5的远程桌面协议功能足够的VNC客户端和通用API. 现在Guacamole可以用作一个中心网关来连接多个运行不同协议的桌面. 同时也提供可扩展的认证, 当然这里就需要可以通过HTML5访问的一个通用API.
Guacamole有2个部分:
Guacamole-server: 提供代理和相关依赖库
guacamole-client: 提供服务端容器(如Tomcat)运行的客户端
Guacamole-client可以直接使用二进制程序, 但Guacamole-server就需要通过源码按照了(不要灰心, 很简单的, 并且编译过程也是自动化的)
以下以CentOS为例介绍按照过程:
CentOS7.2 + Tomcat8.5 + JDK18 + guacamole-server1.1.0
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
yum -y install
http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum -y install cairo-devel libjpeg-devel libpng-devel uuid-devel
yum -y install ffmpeg-devel freerdp-devel pango-devel libssh2-devel
yum -y install libtelnet-devel libvncserver-devel pulseaudio-libs-devel
yum -y install openssl-devel libvorbis-devel libwebp-devel
yum -y install freerdp-plugins
访问链接:
https://guacamole.apache.org/releases/1.1.0/
如图
tar -zvxf guacamole-server-1.1.0.tar.gz -C /opt
cd /opt/guacamole-server-1.1.0/
./configure --with-initdir=/etc/init.d
make #编译
make install #安装
service guacd start
提示SUCCESS,表示安装成功。
下载链接中的guacamole-1.1.0.war,然后放入tomcat webapps目录下(tomcat安装省略)。然后启动tomcat 访问链接
http://192.168.0.46:8088/guacamole/#/
mkdir /etc/guacamole/
guacd.conf
[server]
bind_host = 0.0.0.0
bind_port = 4822
guacamole.properties
# Hostname and port of guacamole proxy
guacd-hostname: 0.0.0.0
guacd-port: 4822
enable-websocket: true
enable-clipboard-integration: true
# auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider
# noauth-config: /etc/guacamole/noauth-config.xml
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
basic-user-mapping: /etc/guacamole/user-mapping.xml
重启guacd和tomcat并登录即可。
最后,分享一个演示的视频
guacamole搭建,一个基于HTML5的远程桌面