Guacamole搭建,一個基於HTML5的遠程桌面

介紹

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-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,表示安裝成功。

安裝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 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

創建授權文件 user-mapping.xml

具體如圖所示:
在這裏插入圖片描述

重啓guacd和tomcat並登錄即可。

最後,分享一個演示的視頻

guacamole搭建,一個基於HTML5的遠程桌面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章