【寫於2016年8月15日】html
【因爲我目前沒有時間嘗試其餘linux系統下的搭建工做,因此這篇帖子僅針對在ubuntu下搭建guacamole的狀況】linux
在搭建guacamole以前,須要先準備好操做系統環境,若是可行的話,建議安裝最新版的ubuntu(我用一箇舊版本(12.04)的搭建的時候,遇到了一些依賴項太老而不兼容的問題,在換了最新版的ubuntu16.04後,這些問題,都沒再出現)。這裏提供了兩種安裝方式,能夠根據本身的需求任選其一。git
在開始以前,先理解guacamole的架構。這幅圖來自guacamole官網(http://guacamole.incubator.apache.org/)。在官網的教程中,整個guacamole項目分爲兩個部分,guacamole-client和guacamole-server。在官網的教程裏,這幅圖裏的guacd就是guacamole-server,這幅圖裏Servlet Container裏的Guacamole就是guacamole-client(爲何如此呢?個人理解是:guacd編譯好以後,是做爲一個守護進程,獨立運行的。它負責與具體的RDP Server/VNC Server等溝通。而Servlet Container裏的Guacamole被髮送到瀏覽器裏,做爲最終的client與guacd這個server交互)。github
0.系統概覽web
guacamole做爲代理,鏈接任意位置的RDP server(guacamole和rdp server能夠在同一臺機器上)。手機和PC,只要有瀏覽器,且瀏覽器支持HTML5,那麼就能夠用瀏覽器訪問guacamole代理。apache
1.最簡安裝方式ubuntu
首先是有一個最簡的安裝過程,共三個步驟。windows
1 $ apt-get install guacamole-tomcat
而後是設置web容器(這裏是tomcat7,也多是其餘版本的tomcat,也多是其餘web容器)。這是告訴tomcat,guacamole.war(這個war包及其配置文件,就是guacamole-client) 以及其配置文件在哪裏。瀏覽器
1 $ ln -s /var/lib/guacamole/guacamole.war /var/lib/tomcat7/webapps 2 $ ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole
而後是設置配置文件,這是告訴guacamole-client,本身的設置是什麼。guacamole-client的配置文件有兩個。guacamole.properties和user-mapping.xml。前者主要告訴guacamole-client,guacd(guacamole-server)的地址和端口號,以及user-mapping.xml的位置等。後者主要設置最終用戶登陸guacamole時的用戶名和密碼,以及,guacamole要訪問的最終RDP Server/VNC Server的ip地址和密碼。在這個最簡安裝方法中,guacamole.properties本身已經配置好,無需修改,只須要修改user-mapping.xml的內容。下面來看一下user-mapping.xml的內容。緩存
<user-mapping> <authorize username="guacamoleusername" password="5f4dcc3b5aa765d61d8327deb882cf99" encoding="md5"> <connection name="SSH1"> <protocol>ssh</protocol> <param name="hostname">192.168.0.18</param> <param name="port">22</param> <param name="username">gacanepa</param> </connection> <connection name="RDP2"> <protocol>rdp</protocol> <param name="hostname">192.168.0.19</param> <param name="port">3389</param> <param name="password">123456</param> </connection> </authorize> </user-mapping>
<authorize>標籤裏的,username和password是用戶在瀏覽器裏登陸guacamole的時候,要求的用戶名和密碼。這裏的password是字符串「password」的md5值(這裏也能夠把參數password設爲明文,而後不要encoding="md5")。隨後的<connection>標籤,是設置要訪問的RDP Server/VNC Server的ip地址和訪問協議和訪問密碼。若是最終的RDP Server/VNC Server不須要密碼,則能夠不要<connection>裏的<param name="password「>的項。<connection>項能夠有一個或者多個(這個示例裏有兩個),guacamole支持多個鏈接,這一點能夠從官網首頁的演示視頻裏看到效果。
到這裏,最簡安裝方式就完成了。
(我在安裝的時候,只在ubuntu12.04下進行過最簡安裝,這個時候,這種最簡安裝方式是不支持rdp代理的。rdp代理的那個模塊沒有被包含進來。隨後在ubuntu16.04中,沒有嘗試最簡安裝,不清楚此時最簡安裝是否支持rdp代理)
這裏的最簡安裝支持vnc。在<connection>裏配置任何位置的一個VNC Server都是能夠的。只要保證VNC Server可訪問就能夠了。我這裏是用的本機上vnc4server。
若是你跟我同樣,也是訪問的是ubuntu裏的vnc4server,要提早作一個設置。打開桌面共享的設置(中文能夠直接搜索 桌面共享)。選中容許「其餘人查看您的桌面」。另外下邊的「必須對爲對本機器的每次訪問都進行確認」這一項,若是不選中,每次遠程鏈接,都會在這臺機器上彈出一個界面問你是否容許,每次你都須要來這裏手動點擊肯定確認一下。因此根據你本身的安全需求,設置這個選項。(下第二張圖源於:http://itoedr.blog.163.com/blog/static/12028429720149113614962/)
啓動vnc4server
$ vnc4server
啓動guacd(guacamole-server)
$ guacd
重啓tomcat(guacamole-client)
$ sudo /etc/init.d/tomcat7 restart
而後就能夠在瀏覽器裏訪問了。例如
127.0.0.1:8080/guacamole
這裏的ip地址,換成你運行guacamole的地址。而後就會出現以下界面,在這裏輸入<authorize>標籤裏設置的用戶名"guacamoleusername"和密碼"password"(我這幅圖裏是個人用戶名和密碼,你換成你設置的就行了)。
就能夠登陸進去了。
以上是經過最簡安裝方式部署guacamole,而後使其做爲vnc代理的過程。
若是機器A訪問機器B,出現訪問失敗的狀況。能夠先試着ping一下,看看兩臺機器是否連通,若是不能連通而網絡又沒有問題。那麼試着關閉ubuntu的防火牆試一試(關閉防火牆的風險自負)。
$ sudo ufw disable
2.源代碼編譯安裝
2.1guacamole-server(guacd)的編譯和安裝
源代碼編譯安裝能夠自由選擇本身須要或者不須要的功能。我這裏是把所有的功能都編譯進去。
約束:ubuntu16.04 tomcat7 openjdk-8-jdk(通常來講,用最新版的就行了)。tomcat請自行安裝。
先編譯guacd。也就是guacamole-server的部分。首先須要先安裝依賴項。最好各個依賴項都安裝最新的版本(其完整的依賴項列表參見官網http://guacamole.incubator.apache.org/doc/gug/installing-guacamole.html)。按以下方式安裝依賴項
$ sudo apt-get install libcairo2-dev libjpeg62-dev libpng12-dev libossp-uuid-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libssh-dev
而後去官網下載,穩定版的源代碼。注意,能夠經過git clone的方式,直接從github裏克隆出來編譯,可是那是最新的版本,未通過徹底測試,編譯的時候可能會有更大機率出問題,若是不是很是肯定和必要,建議直接從官網提供的下載連接裏下載,這是通過充分測試的版本,最大限度提供了對不一樣環境的適應性。在 http://guacamole.incubator.apache.org/releases/0.9.9/ 能夠找到下載連接。我下載的是,截至目前,官網首頁發佈的穩定版。
下載以後,解壓(下載時存儲文件的位置,解壓後的位置,其實都不重要,由於編譯流程完成後,自動就把文件放置到了合適的位置,無需手手動去把文件放置到某個肯定的位置)。而後進入到guacamole-server的目錄
$ cd guacamole-server/
而後,執行configure命令,它的工做包括檢查各個依賴項的狀況。
$ ./configure --with-init-dir=/etc/init.d
( 這裏跟的參數的意思是,把guacd加入到隨系統啓動的列表中。)
這個命令運行的時候,會有許多輸出,也會執行一下子時間,保持耐心。最重要的信息,它會最後輸出。沒必要擔憂它快速滾動的不少內容沒看見。最後會出現以下圖的界面。
這裏能夠看到,全部的依賴項都yes,表示這些依賴項都準備好了。(這裏並非每一個都是必須的,若是你不須要的功能是no,也不要緊。不過依賴項裏有必要項,必要項是不能缺乏的,至於哪些是必要項,官網的依賴項列表裏有說明)。若是某一項是no,而你又須要,能夠直接經過關鍵字搜索。安裝對應的庫。這裏要注意,每一個庫最好都安裝最新的。由於我編譯的時候,遇到過由於某個庫版本太舊而致使運行失敗的問題。
而後
$ make
而後
$ make install
到這裏guacamole-server安裝好了。而後執行ldconfig來更新安裝庫的時候的緩存
$ ldconfig
而後,就能夠
$ guacd
來運行guacd(下次系統啓動的時候,guacd會隨着系統自動啓動)。
2.2 guacamole-client的打包和安裝
2.2.1直接使用打包好的guacamole.war文件
而後是guacamole-client的部分。也就是web容器裏的部分。這裏其實有個簡單的方法。就是在官網下載guacamole-0.9.9.war。而後直接放置使用就能夠了。由於guacamole-client其實並不須要編譯。它只是須要一個打包過程。而這個.war文件就是打包好的文件。
若是是按照直接下載這個guacamole-0.9.9.war的方式。那麼,下載好以後(隨便下載到某個位置)。目的是告訴tomcat,guacamole-client(也就是guacamole-0.9.9.war)在哪裏。能夠經過建立軟連接的方式,也能夠經過直接把.war文件拷貝過去的方式。這裏使用直接把.war文件拷貝過去的方式。
$ cp /Downloads/guacamole/guacamole-0.9.9.war /var/lib/tomcat7/webapps/guacamole.war
注意,拷貝過去後,文件名必定要改成guacamole.war。
2.2.2手動打包
若是卻有必要,能夠下載guacamole-client的源碼手動打包。最好使用與guacamole-server相同的版本。在官網下載穩定版的guacamole-client的源碼(http://guacamole.incubator.apache.org/releases/0.9.9/)。
而後,解壓縮。進入到這個目錄
$ cd guacamole-client-0.9.9/
而後執行
$ mvn package
打包成功後,會輸出build success的信息。打包完成後,在當前目錄的子目錄guacamole/target(也就是guacamole-client-0.9.9/guacamole/target)中,有guacamole-0.9.9.war文件。按照2.2.1的方式,將其放置到tomcat容器中。記得更名字。
2.2.3配置guacamole-client
而後就是,最簡安裝方式裏也提到過的配置文件的問題。guacamole.properties 和user-mapping.xml。按如今的方法安裝的過程當中,到如今,是沒有guacamole.properties 和user-mapping.xml這兩個文件的。須要本身手動建立。而後填入內容。先建立兩個目錄(若是已經存在,就不要再建立)
# mkdir /etc/guacamole # mkdir /usr/share/tomcat7/.guacamole
而後建立文件
# touch /etc/guacamole/guacamole.properties
在剛剛建立的這個文件guacamole.properties中,插入以下內容
guacd-hostname: localhost guacd-port: 4822 user-mapping: /etc/guacamole/user-mapping.xml auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider basic-user-mapping: /etc/guacamole/user-mapping.xml
這裏面user-mapping項和basic-user-mapping項都是指示user-mapping.xml文件的位置。
關於user-mapping.xml的內容。請參見第一種方法裏user-mapping.xml文件的內容。這裏是同樣的。設置好本身要訪問的遠程桌面的server的位置和密碼。
而後建立一個軟鏈接,告訴tomcat到哪裏去找guacamole.properties這個配置文件。
# ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole/
而後是修改配置文件的權限和全部者(不然tomcat即便找到了配置文件也沒有權限去讀它)
# chmod 600 /etc/guacamole/user-mapping.xml # chown tomcat7:tomcat7 /etc/guacamole/user-mapping.xml
而後重啓tomcat。啓動guacd。就完成了。在瀏覽器裏訪問
127.0.0.1:8080/guacamole
登陸進去。就能看到遠端桌面了。
這是我配置一個例子。瀏覽器經過guacamole代理訪問RDP Server(這裏是virtualbox,它支持RDP協議的遠程桌面)。
參考文章:
http://itoedr.blog.163.com/blog/static/12028429720149113614962/
這個連接提供了最簡安裝方式。
http://www.cnblogs.com/ji-yun/p/5657709.html
這個連接提供了官網安裝教程的中文翻譯
http://www.tecmint.com/guacamole-access-remote-linux-windows-machines-via-web-browser/
這個連接提供了完整安裝教程,特別是guacamole.properties和user-mapping.xml這兩個配置文件的具體使用方法。(英文文章)