guacamole1.3.0安装向导(部分官方人工翻译)centos7
目錄
- 安裝包簡介
- Guacamole源碼安裝
- guacamole-server
- guacamole-client
- 部署Guacamole
- 配置
- GUACAMOLE_HOME(/etc/guacamole)
- guacamole.properties
- 配置實例
- 默認配置
- user-mapping
- Mysql數據庫--管理Guacamole
- 下載數據庫擴展
- 創建數據庫
- 設置數據庫訪問權限
- 運行數據庫腳本
- 配置Guacamole
- 登錄
- 訪問
- 參考連接
- 參考文檔
安裝包簡介
Linux的許多發行版系統的鏡像倉庫中都有Guacamole的安裝包。如果你的linux系統有Guacamole包,那是最合適的安裝方法。如果你的系統沒提供Guacamole的安裝包,或者版本太老,也可以很容易地通過源代碼構建安裝。
注意:
Guacamole是一個遠程桌面網關(類似跳板機),被連接的服務器沒有某種遠程桌面連接服務或者沒開是不能訪問你的遠程桌面。Guacamole本身不提供VNC或者RDP服務,本文也不是指導你安裝VNC或RDP服務端
VNC或者RDP的安裝啟動,參考對應的系統文檔
直接從系統的guacamole安裝包安裝一般要安裝web應用(guacamole.war),guacd代理(guacamole-server),vnc協議支持(libguac-client-vnc).如果你想要支持RDP,或者VNC就要安裝對應的支持庫。
Guacamole源碼安裝
從源碼構建并不困難,前提是已經安裝了必要的安裝工具。所有的Guacamole源碼都可以很方便地從官方網站下載,每個都是以組件名命名。每個包都包含了README文件,有詳細的構建和安裝說明。
Guacamole被分為2部分:guacamole-server,包含guacad代理和相關的庫。guacamole-client,通過servlet容器(一般是Tomcat)使用的客戶端。大多數情況下,只需要構建guacamole-server,并且下載對應的guacamole.war來提供客戶端訪問。只有在你想編輯源碼或者嘗試未發布的版本才需要去構建guacamole-client。
編譯C語言組件,你需要C編譯器(如gcc)和每個組件相關的lib庫。注意,很多linux發行版都將lib分為lib和"development“包;這些”development“也需要安裝。它們通常以dev或者devel結尾(建議直接使用yum install gcc*).
guacamole-server
guacamole-server包含所有本體和服務端組件,都是連接遠程桌面所需要的。具體是一個常用C lib,libguac,組件的依賴以及各種協議的支持庫,代理程序,guacd。
guacd是guacamole 服務器上的代理進程,從Guacamole的客戶端web程序接受遠程連接信息。通過動態地加載協議插件在常用遠程桌面協議如VNC或RDP中有效地轉換。構建guacd或生成一個可執行guacd文件,它可以手動運行,也可以配置開機自啟。
為了構建guacamole-server,你需要Cairo,libpng,libjpeg。在所有地情況下這些都是必須的,否則不能編輯構建。OSSP UUID 庫也是需要地,為了使Guacamole地連接有唯一的標識符。除此之外都是可選地,取決于要支持地協議。
Guacamole目前支持VND,RDP,SSH和telnet。如果你有安裝了相應地支持插件,對應地協議也會和guacamole-server一起構建。如果你安裝了對應的庫,這些協議都會啟用
| Cairo | 是 | 用于圖像顯示,沒有它不能運行:cairo-devel |
| libpng | 是 | 寫入PND圖片,沒有它不能運行:libpng-devel |
| libjpeg-turbo | 是 | 提供JPEG支持: libjpeg-turbo-devel,沒有的話可用libjpeg-devel替代,盡管沒那么快 |
| libtools | 是 | 編譯需要,沒有它不能運行: libtool |
| OSSP UUID | 是 | 使Guacamole地連接有唯一的標識符,沒有它不能運行:uuid-devel |
| FFmpeg | 否 | 包含了libavcodec, libavformat, libavutil, libswscale libraries,guacenc在翻譯Guacamole會話時編碼視頻流:ffmpeg-devel |
| FreeRDP | RDP協議必需 | 支持RDP遠程桌面協議: freerdp-devel |
| Pango | ssh和telnet必需 | 用于文本顯示:pango-devel |
| libssh2 | ssh必需 | ssh支持: libssh2-devel |
| libtelnet | telnet必需 | telnet支持:libtelnet-devel |
| libVNCServer | VNC必需 | VNC協議支持:libvncserver-devel |
| libwebsockets | kubernets必須 | kubernets支持:libwebsockets-devel |
| OpenSSL | ssh和ssl連接必需 | libssl支持SSL和TLS-2種常用的加密web流量的方法;如果安裝了libssl,guacd構建時會提供SSL支持,用于加密guacd和web客戶端之間的會話:openssl-devel |
| PulseAudio | 否 | VNC協議音頻相關的:pulseaudio-libs-devel |
| libvorbis | 否 | 聲音壓縮工具,否則不會壓縮:libvorbis-devel |
| libwebp | 否 | WebP 圖片相關的:libwebp-devel |
從官方網站下載的包是經過測試的,符合大眾的。下載的是.tar.gz結尾的,需要解壓
$ tar -xzf guacamole-server-1.3.0.tar.gz $ cd guacamole-server-1.3.0/ $如果想要最新的代碼,并且不在乎沒有像穩定版一樣經過嚴格的測試,可以從GitHub上下載
$ git clone git://github.com/apache/guacamole-server.git Cloning into 'guacamole-server'... remote: Counting objects: 6769, done. remote: Compressing objects: 100% (2244/2244), done. remote: Total 6769 (delta 3058), reused 6718 (delta 3008) Receiving objects: 100% (6769/6769), 2.32 MiB | 777 KiB/s, done. Resolving deltas: 100% (3058/3058), done. $下載完guacamole-server源碼并解壓后,運行configure。這是通過GNU Autotools自動生成的shell腳本,運行configure決定了你系統上可用的組件和協議,會選擇你安裝過的組件來編譯。
注意: 從GitHub上下載的沒有configure腳本,也沒有自動生成的代碼。你需要手動去生成configure:
$ cd guacamole-server/ $ autoreconf -fi $這個命令需要安裝GNU Autotools
運行configure之后,可以看到被發現即將安裝的插件和lib庫和支持的協議
$ ./configure --with-init-dir=/etc/init.d checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes ...------------------------------------------------ guacamole-server version 1.3.0 ------------------------------------------------Library status:freerdp2 ............ yespango ............... yeslibavcodec .......... yeslibavformat ......... yeslibavutil ........... yeslibssh2 ............. yeslibssl .............. yeslibswscale .......... yeslibtelnet ........... yeslibVNCServer ........ yeslibvorbis ........... yeslibpulse ............ yeslibwebsockets ....... yeslibwebp ............. yeswsock32 ............. noProtocol support:Kubernetes .... yesRDP ........... yesSSH ........... yesTelnet ........ yesVNC ........... yesServices / tools:guacd ...... yesguacenc .... yesguaclog .... yesInit scripts: /etc/init.dSystemd units: noType "make" to compile guacamole-server.$–with-init-dir=/etc/init.d參數是在/et/init.d文件夾內安裝個啟動腳本,方便啟動和開機自啟。不需要則取消該選項。如果你的系統啟動路徑不是放在這里,自己找對應的系統資料
如果你沒有對應的依賴項或包(或者版本不對)上面會提示"no",如果缺少必須要的包,則會失敗,你要重新安裝依賴,解決之后重新運行configure。
注意:
SSH和telnet都需要安裝字體,否則輸出異常。但是沒有安裝字體也會構建成功,但是使用會失敗
如果ssh連接有問題可以查看syslog日志,安裝字體(fonts)并重試
configure運行之后,輸入"make",guacamole-server會開始編譯:
$ make Making all in src/libguac make[1]: Entering directory `/home/zhz/guacamole/guacamole-server/src/libguac' ... make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server/src/protocols/vnc' make[1]: Entering directory `/home/zhz/guacamole/guacamole-server' make[1]: Nothing to be done for `all-am'. make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server' $輸入"make install"安裝編譯好的組件,然后輸入"ldconfig"更新安裝lib的系統緩存
# make install Making install in src/libguac make[1]: Entering directory `/home/zhz/guacamole/guacamole-server/src/libguac' make[2]: Entering directory `/home/zhz/guacamole/guacamole-server/src/libguac' ... ---------------------------------------------------------------------- Libraries have been installed in:/usr/local/libIf you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following:- add LIBDIR to the `LD_LIBRARY_PATH' environment variableduring execution- add LIBDIR to the `LD_RUN_PATH' environment variableduring linking- use the `-Wl,-rpath -Wl,LIBDIR' linker flag- have your system administrator add LIBDIR to `/etc/ld.so.conf'See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/home/zhz/guacamole/guacamole-server/src/protocols/vnc' make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server/src/protocols/vnc' make[1]: Entering directory `/home/zhz/guacamole/guacamole-server' make[2]: Entering directory `/home/zhz/guacamole/guacamole-server' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/home/zhz/guacamole/guacamole-server' make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server' # ldconfig #現在一切都安裝好了,但是guacd還沒運行。安裝好客戶端后運行guacd才能使用Guacamole。
安裝并啟動guacd之后,需要去激活自啟服務才能自啟,不同系統設置方式不同,自行查閱相關文檔
Centos7
guacamole-client
guacamole-client包含了Guacamole的所有JAVA和Maven組件(guacamole,guacamole-common,guacamole-ext,guacamole-common-js).這些組件最終會安裝成web應用程序,給用戶提供HTML5 Guacamole 客戶端服務來連接你的guacamole-server服務端。web應用程序會連接guacd,guacamole-server,為網站用戶提供他們有權限訪問的遠程桌面。
通常你不需要去構建guacamole-client,因為已經寫入到JAVA了并且是跨平臺的。guacamole-client最簡單的獲取方法是從官網上下載最新的guacamolo.war(編譯好的guacamole-client)。
編譯guacamole需要Apache Maven 和 Java JDK。大多數Linux系統會提供這些包。
如果你需要最新的代碼,可以從官方網站上下載,這些版本都是經過測試的,符合大眾的。下載的包是.tar.gz結尾的,需要解壓:
$ tar -xzf guacamole-client-1.3.0.tar.gz $ cd guacamole-client-1.3.0/ $也可以從GitHub上下載未經測試的版本
$ git clone git://github.com/apache/guacamole-client.git Cloning into 'guacamole-client'... remote: Counting objects: 12788, done. remote: Compressing objects: 100% (4183/4183), done. remote: Total 12788 (delta 3942), reused 12667 (delta 3822) Receiving objects: 100% (12788/12788), 3.23 MiB | 799 KiB/s, done. Resolving deltas: 100% (3942/3942), done. $和guacamole-server不同的是,從gitHUB上下載的代碼,也不需要在構建前運行任何腳本
構建guacamole-client只需運行”mvn package“。這回引導Maven自動構建,并打包所有組件,生成一個.war文件,包含了web應用程序:
構建之后,.war文件會在當前路徑(運行mvn package的路徑)的guacamole/target/文件夾內。這個war文件包含了web應用程序,所有依賴。
部署Guacamole
Guacamole的部署涉及有2個關鍵的文件:
guacamole.war,包含web應用程序;
guacamole.properties,Guacamole的主配置文件。
安裝Guacamole的標準方法是將這些文件放在標準路,并創建軟連接以便于Tomcat找到它們。
不管是構建還是直接下載的,最終guacamole.war文件或其鏈接,必須要放在servlet容器放.war文件的地方
# cp guacamole.war /var/lib/tomcat/webapps # cp guacamole/target/guacamole-1.3.0.war /var/lib/tomcat/webapps/guacamole.war #如果使用的是不同的servlet容器或者Tomcat安裝在不同于上述的路徑,則需要根據自己的情況來變更。
Guacamole部署完成后,Tomcat和guacd進程需要重啟,重啟之后即可使用。啟動命令不同系統可能用所不同。一般是在腳本后加 ”restart“選項:
# /etc/init.d/tomcat6 restart Stopping Tomcat... OK Starting Tomcat... OK # /etc/init.d/guacd start Starting guacd: SUCCESS guacd[6229]: INFO: Guacamole proxy daemon (guacd) version 0.7.0 guacd[6229]: INFO: Unable to bind socket to host ::1, port 4822: Address family not supported by protocol guacd[6229]: INFO: Successfully bound socket to host 127.0.0.1, port 4822 guacd[6229]: INFO: Exiting and passing control to PID 6230 guacd[6230]: INFO: Exiting and passing control to PID 6231 #啟動Tomcat和guacd之后,Guacamole成功安裝完成,雖然它不會完整地運行。當前狀態下是完全未配置地。
配置
安裝Guacamole之后,運行之前你需要配置用戶和連接。
Guacamole默認的認證方法是從user-mapping.xml的配置文件讀取用戶和鏈接。這種認證方式適用于以下情況:
1.Guacamole的小型部署
2.相對容易地驗證guacamole是否被正確地設置
另外,更多復雜的認證方法,如使用數據庫在其它地方講
無論使用那種認證方式,Guacamole的配配置文件主要包含2部分:引用叫GUACAMOLE_HOME的目錄,配置文件的主要搜索路徑;guacamole.properties,Guacamole使用的主要的配置文件和擴展配置
GUACAMOLE_HOME(/etc/guacamole)
GUACAMOLE_HOME是放置Guacamole配置文件的目錄,默認是/etc/guacamole。所有的文件,擴展等都在此目錄中。GUACAMOLE_HOME的結構被嚴格定義,包含以下可選文件:
guacamole.properties主要的配置文件,里面的屬性決定了Guacamole怎么連接guacd,配置另外的的認證方式 logback.xmlGuacamole對所有的消息使用的日志系統叫Logback 。默認情況下,Guacamole只會記錄console信息,但是可通過Logback配置文件改變 extensions/安裝Guacamole的額外擴展。Guacamole在啟動時會自動加載此目錄下的.jar文件 lib/Guacamole需要額外的lib包都會在此文件夾內搜索。Guacamole會將此文件夾內的所有.jar文件加載到所有可用的擴展上去。如果擴展包需要額外的lib包,比如數據庫驅動,可以上傳到這里想改變GUACAMOLE_HOME的路徑/etc/guaca,可參考下面任意方法:
1.在servlet容器運行用戶的家目錄創建.guacamole的文件夾 2.使用絕對路徑設置環境變量GUACAMOLE_HOME,查看你的servlet容器設置環境變量的方法 3.指定系統的絕對路徑替代GUACAMOLE_HOMEguacamole.properties
Guacamole web應用程序的主要配置文件是guacamole.properties。Guacamole及其擴展的所有參數設置都是在這里配置,包括用戶身份認證。
在以前的版本中,該文件必須在servlet容器的類路徑下。現在guacamole.properties的路徑可以通過環境變量或系統屬性準確的設置,并且類路徑是最后采用的辦法。Guacamole會采用以下的順序檢查:
guacamole.properties文件是可選的,在默認配置不滿足或者為擴展插件提供配置額外的配置信息時會使用。以下幾種參數是通用的:
api-session-timeout Guacamole在會話(token 認證)不活躍地情況下保持的時間,分鐘為單位,如果刪除,60分鐘后過期allowed-languages Guacamole web界面可選擇的語言關鍵字名單。如果你要允許英文和德文,可以這樣寫: allowed-languages: en, de 一般不要省略英文。如果刪除該參數,所有語言都可用enable-eviroment-properties 設置為true,環境變量的值會覆蓋本配置文件設定的值,一般不要這個參數guacd-hostname guacd監聽的IP,默認localhostguacd-port guacd監聽端口,默認4822guacd-ssl 如果設置為true,Guacamole 會在web應用程序和guacd之間加密。默認不加密 如果啟用了該設置,你需要通過guacd 的命令參數選項配置,具體參數看man guacd說明。你需要SSL證書和私鑰skip-if-unavailable skip-if-unavailable: mysql, ldap 如果名單上的身份認證方式出現內部問題,則跳過他們采用其它認證方式配置實例
# Hostname and port of guacamole proxy guacd-hostname: localhost guacd-port: 4822默認配置
Guacamole的默認配置模塊很簡單,由用戶名映射組成。Guacamole簡單地從XML文件讀取用戶名和密碼。它始終處于啟用狀態,但只會從 XML 文件(如果存在)中讀取,并且相對于任何其他身份驗證擴展插件,它的優先級始終排在最后。
還有其它的認證模塊也是可以的。Guacamole提供了數據庫身份認證方式去管理連接和用戶,通過web界面操作。還可以通過Guacamole web應用程序提供的額外API和guacamole-ext創建認證模塊。
user-mapping
默認情況下,通過GUACAMOLE_HOME/user-mapping.xml文件讀取賬號密碼和配置信息。
<user-mapping><!-- Per-user authentication and config information --><authorize username="USERNAME" password="PASSWORD"><protocol>vnc</protocol><param name="hostname">localhost</param><param name="port">5900</param><param name="password">VNCPASS</param></authorize><!-- Another user, but using md5 to hash the password(example below uses the md5 hash of "PASSWORD") --><authorizeusername="USERNAME2"password="319f4d26e3c536b5dd871bb2c52e3178"encoding="md5"><!-- First authorized connection --><connection name="localhost"><protocol>vnc</protocol><param name="hostname">localhost</param><param name="port">5901</param><param name="password">VNCPASS</param></connection><!-- Second authorized connection --><connection name="otherhost"><protocol>vnc</protocol><param name="hostname">otherhost</param><param name="port">5900</param><param name="password">VNCPASS</param></connection></authorize></user-mapping>每個 <authorize> 標簽對應一個用戶,包含了該用戶授權的連接。每個連接使用<connection>標簽標識,包含了協議和協議參數,分別用<protocal>和<param>標簽標識。
這只是user-mapping.xml文件的一部分標簽,其它參數設置參考
https://guacamole.apache.org/doc/1.3.0/gug/configuring-guacamole.html#connection-configuration
Mysql數據庫–管理Guacamole
通過在Guacamole網站上下載擴展包可支持Mysql,PostgreSQL,SQL Server等數據庫認證方式。使用數據庫還能提供額外的功能,比如負載均衡,web管理等。和XML方式不同,所有設置可以立馬生效。
不同的認證方式之間可以是從屬關系,可以混用
使用擴展認證方式需要以下條件:
下載數據庫擴展
數據庫身份驗證擴展插件與主要的guacamole.war 分開提供。
guacamole-auth-jdbc-1.3.0.tar.gz–版本要和guacamole-server和guacamole.war的版本一致
http://guacamole.apache.org/releases/.
mysql:
包含了Mysql/MariaDB認證擴展包,guacamole-auth-jdbc-1.3.0.tar.gz,和schema/文件夾,包含設置數據庫的腳本。guacamole-auth-jdbc-1.3.0.tar.gz需要放在GUACAHOME_HOME/extensions,GUACAMOLE_HOME默認是/etc/guacamole。MYSQL的 JDBC驅動必須放在GUACAHOME_HOME/lib文件夾。
MYSQL的 JDBC驅動需要去自己去找。
https://downloads.mysql.com/archives/c-j/
相關配置
可以通過在guacamole.properties配置mysql-server-timezone參數指定Mysql運行的時區。雖然MYSQL可以自己通過服務匹配時區,但大多數情況下,是有問題的。在這種情況下,MYSQL可能會拒絕連接,除非創建連接時傳入時區參數。此參數指定時區以便于連接持續正常,JDBC也可以正確地轉換時間戳。格式:
mysql-server-timezone: China/Shanghai
創建數據庫
數據庫認證模塊需要一個數據庫去存儲認證數據和一個數據訪問和操作用戶。也可以使用已存在的數據庫和用戶,但是為了簡單和安全,以下配置假設已經創建了一個新的數據庫和只用于Guacamole和認證模塊的用戶
安裝數據庫,并且有權限創建和管理數據庫。
為了方便演示,以下說明以"guacamole_db"為例,也可以是其它名字
設置數據庫訪問權限
為了使數據庫執行查詢權限,必須創建一個數據庫用戶并賦予權限管理所有的表。只需要SELECT,UPDATE和DELETE的權限。
以下說明假設用戶為"guacamole_user",密碼”some_password“,建議設置復雜一點
運行數據庫腳本
腳本在下載的文件的schema/目錄下,該腳本可創建數據庫架構和管理用戶,這些文件以序號命令以便于一條命令執行:
$ ls schema/ 001-create-schema.sql 002-create-admin-user.sql upgrade $ cat schema/*.sql | mysql -u root -p guacamole Enter password: password $操作成功后,所有數據庫表會被創建成功,數據庫就準備好了。接下來配置Guacamole來使用數據庫。
注意: 如果你從不支持連接組的舊版本升級,請運行schema/upgrade目錄下的腳本
$ ls schema/upgrade/ upgrade-pre-0.8.2.sql $ mysql -u root -p guacamole < schema/upgrade/upgrade-pre-0.8.2.sql Enter password: password $配置Guacamole
數據庫和用戶已創建完成,現在創建guacamole.properties文件連接數據庫(HOME_GUACAMOLE目錄下)
# Auth provider class auth-provider: net.sourceforge.guacamole.net.auth.mysql.MySQLAuthenticationProvider# MySQL properties mysql-hostname: localhost mysql-port: 3306 mysql-database: guacamole mysql-username: guacamole mysql-password: some_password默認情況下,允許并發訪問。
重啟servlet容器,如Tomcat
登錄
安裝Mysql之后你可以登錄并且改變密碼,添加額外的用戶。默認賬號密碼都是guacadmin,可以在web界面修改。
訪問
Tomcat一般是8080.則http://x.x.x.x:8080/guacamole參考連接
RDP的連接這里要用NLA模式,對應RDP服務端也要修改為NLA
參考文檔
https://guacamole.apache.org/doc/0.9.2/gug/guacamole-architecture.html
總結
以上是生活随笔為你收集整理的guacamole1.3.0安装向导(部分官方人工翻译)centos7的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加水就能跑的神车,破产了!
- 下一篇: 20180324基数排序(没太看懂)