介绍

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应用不需要知道具体运行的什么协议.

关于Guacamole协议:

web应用完全不需要理解远程桌面协议, 但必须要理解Guacamole的协议(远程显示渲染和事件传输),
而作为一个远程显示和交互协议, Guacamole是现有远程连接协议的集合. 想让Guacamole支持一个新的协议 只需要下一个"翻译"协议的中间层即可. 这个中间件就是guacd

关于web应用

web应用是直接和用户交付的组件.web应用不依赖远程桌面协议, 而依赖guacd; web应用的唯一左右就是提供一个漂亮的web界面和认证.
目前主要用java来写的web应用, 但它可以基于任何语言重写; Guacamole的重点在于API.

关于RealMint

Guacamole现在是一个通用的远程桌面网关, 但并不绝对. Guacamole开始于一个纯净的基于文本的JS写的名字叫做ReaMint的telnet客户端, 这个主意起源于演示, 之所以出名主要是由于他是纯JS写的.

RealMint的隧道主要是用PHP写的, 相对于Guacamole的HTTP的隧道, RealMint的隧道只是简单的长轮询, 并且效率低下. 但是RealMint的键盘部分实现的很好, 目前吸收到了Guacamole中, 但也仅此而已了.

关于VNC客户端

一旦开发者掌握了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-develyum -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,表示安装成功。

安装client

下载链接中的guacamole-1.1.0.war,然后放入tomcat webapps目录下(tomcat安装省略)。然后启动tomcat 访问链接
http://192.168.0.46:8088/guacamole/#/

配置

创建guacamole配置文件和目录

mkdir /etc/guacamole/

创建guacd.conf和guacamole.properties文件

guacd.conf

[server]
bind_host = 0.0.0.0
bind_port = 4822

guacamole.properties

# Hostname and port of guacamole proxyguacd-hostname: 0.0.0.0guacd-port:     4822enable-websocket: trueenable-clipboard-integration: true# auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider# noauth-config: /etc/guacamole/noauth-config.xmlauth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProviderbasic-user-mapping: /etc/guacamole/user-mapping.xml

创建授权文件 user-mapping.xml

具体如图所示:

重启guacd和tomcat并登录即可。

最后,分享一个演示的视频

guacamole搭建,一个基于HTML5的远程桌面

Guacamole搭建,一个基于HTML5的远程桌面相关推荐

  1. html5桌面系统,基于HTML5的IVI桌面系统及本地功能扩展研究实现

    摘要: 随着汽车技术以及互联网技术的发展,智能化车载信息娱乐系统(IVI:In-Vehicle Infotainment)已经成为汽车工业未来发展的新方向.目前,在用于开发智能化车载信息娱乐系统的大量 ...

  2. 远程桌面监控系统java_基于Java的远程桌面监控源代码

    <基于Java的远程桌面监控源代码>由会员分享,可在线阅读,更多相关<基于Java的远程桌面监控源代码(43页珍藏版)>请在人人文库网上搜索. 1.基于Java的远程桌面监控源 ...

  3. 15 分钟搭建一个基于XLNET的文本分类模型——keras实战

    今天笔者将简要介绍一下后bert 时代中一个又一比较重要的预训练的语言模型--XLNET ,下图是XLNET在中文问答数据集CMRC 2018数据集(哈工大讯飞联合实验室发布的中文机器阅读理解数据,形 ...

  4. 搭建一个基于http的yum服务器

    基于http的yum服务器 在集群中搭建一个基于HTTP的yum服务器,不仅安装速度变快了许多,还能扩展自己定制的rpm包放入yum服务器中,其他服务器只需要正常使用yum install即可批量安装 ...

  5. 使用jQuery开发一个基于HTML5的漂亮图片拖拽上传web应用

    昨天我们介绍了一款HTML5文件上传的jQuery插件:jQuery HTML5 uploader,今天我们将开发一个简单的叫upload center的图片上传程序,允许用户使用拖拽方式来上传电脑上 ...

  6. 零基础搭建一个基于PHP+MYSQL网站教程,个人建站全过程

    零基础搭建一个基于PHP+MYSQL网站教程,个人建站全过程 一.网站计划编写. 1.定位,网站名称,关键字,描述,分类目录,内容 [这里推荐用脑图软件,可以用百度脑图] 2.想好域名      二. ...

  7. 一个基于HTML5的虚拟实验室

    第十一届国际计算机科学教育会议 2016.8.23-25 日本名古屋大学 一个基于HTML5的虚拟实验室 余笙,黄娟,张飞,安应,钟平 中南大学信息科学与工程学院 中国长沙 shengyu@csu.e ...

  8. 从零搭建一个基于React+Nextjs的SSR网站(四):如何搭建服务器并部署Nextjs项目

    个人博客源码:https://github.com/shaotianyu/blog-front PS: 如果你有疑惑,可以给我留言,咱们一起解决它. 从零搭建一个基于React+Nextjs的SSR网 ...

  9. 如何快速搭建一个基于FengMap的地图导航应用?

    蜂鸟视图自成立以来就专注于提供从地图数据生产.地图编辑运维.地图应用开发的全流程专业技术产品与服务.长期的市场考验与技术迭代升级,产品功能接口较全面,性能表现优异. 日前,蜂鸟视图正式向海内外开发者用 ...

最新文章

  1. linux中python如何调用matlab的数据_?如何在Python中加入多个数据帧?
  2. 不要让中国孩子买的玩具都变成外国货!
  3. C++中的变量不初始化是什么结果?(整型、bool型、字符型)结果都是随机的,不确定
  4. OpenGL Deferred Shading延迟阴影实例
  5. linux cdc设备驱动程序,Linux Kernel 'cdc-wdm' USB设备驱动程序堆缓冲区溢出漏洞
  6. kotlin插件禁用导致的Android studio无法打开-mac
  7. 《Revisiting Self-Supervised Monocular Depth Estimation》论文笔记
  8. 4.1EF Core
  9. linux下编译doppia,Grub错误总结解决方案(共十七条)
  10. android 9.0 toast不显示,9.0 toast定位+WebDriverWait显示等待
  11. 脚本计算机术语,谁能给我简单明了的解释一下脚本是什么意思?
  12. android打开图库,Android 7.0 以上通过系统图库打开图片的方法
  13. Could not acquire image ID or digest following build
  14. 2018戊戌年运大解析,不看后悔
  15. 国人骄傲!中国方案开花结果,马来西亚尝到大甜头!
  16. 这才知道我的全部努力,不过完成了普通的生活。
  17. Java Date转long 秒单位 返回给前台
  18. 北京气象学院计算机,何登科-地球科学与测绘工程学院-中国矿业大学(北京)...
  19. 毕业登记表批量打印参考代码
  20. 【Unity】通过2种方法实现摄像机的移动,旋转,放缩

热门文章

  1. ipad 查看电池寿命
  2. python练习题 019:苹果和虫子2
  3. 【流媒体】H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
  4. 如何使用cmd命令批量打开和关闭不需要的服务
  5. Qt5.12+VS2017联合开发环境配置及注意事项
  6. AndroidQ设置中的“运营商视频通话”功能如何默认关闭
  7. M209.长度最小的子数组
  8. 笔记【Redis数据结构、常用命令、key淘汰及持久化策略】
  9. Mysql密码修改无效问题
  10. [Perl] Find Shell on your Wordpress site