Java Guacamole網頁版遠程桌面網關


簡介:Guacamole是無客戶端的遠程桌面網關,它支持RDP、SSH、Telnet、VNC等協議,客戶端是由js編寫的HTML5應用程序,用戶通過Web瀏覽器訪問Guacamole遠程桌面,其Teamviewer和向日葵都是基於C/S架構的遠程桌面連接組件。

一、基礎知識

  1. 工作原理

    A. 用戶使用Web瀏覽器連接到Guacamole服務器;

    B. Guacamole客戶端由Guacamole服務器中的網絡服務器提供給用戶;

    C. 加載后,此客戶端將使用Guacamole協議通過HTTP連接服務器;

    D. 部署到Guacamole服務器的Web應用程序讀取Guacamole協議,並將其轉發到本地Guacamole代理guacd;

    E. 該代理實際上解釋了Guacamole協議的內容,代表用戶連接到任意數量的遠程桌面服務器。

  2. Guacamole配置目錄:/etc/guacamole

    A. guacamole.properties:Guacamole主要配置文件,該文件中的屬性決定了如何連接到guacd,可配置身份驗證的擴展行為;

    B. logback.xml:日志記錄信息文件;

    C. extensions/:Guacamole擴展程序的安裝位置,客戶端在啟動時會自動加載此目錄中的所有.jar包;

    D. lib/:擴展名所需要的庫的搜索目錄;

    E. user-mapping.xml:默認的身份驗證文件。

 

二、配置文件

  1. RDP協議

    A. hostname:連接RDP服務器的主機名或IP地址,必填參數;

    B. port:RDP服務器正在偵聽的端口,默認值是3389;

    C. username:身份驗證的用戶名,如果不填寫就會讓用戶自己填寫;

    D. password:身份驗證的密碼,如果不填寫就會讓用戶自己填寫;

    E. enable-drive:是否啟用文件傳輸,默認為false,表示禁用;

    F. disable-download:是否禁止從遠程服務器到瀏覽器端的下載,默認為false,表示允許下載,如果未啟用文件傳輸,就會忽略此參數;

    G. disable-upload:是否禁止從瀏覽器端到遠程服務器的上傳,默認為false,表示允許上傳,如果未啟用文件傳輸,就會忽略此參數;

    H. drive-path:存儲傳輸文件的目錄,如果未啟用文件傳輸,就會忽略此參數;

    I. create-drive-path:如果目錄不存在,是否自動創建存儲文件的目錄,默認為false,表示不會創建,如果未啟用文件傳輸,就會忽略此參數;

    J. enable-wallpaper:是否啟用渲染桌面壁紙,默認值為false,表示禁用;

    K. enable-font-smoothing:是否將文本以平滑的邊緣呈現,默認值為false,表示粗糙邊緣;

    L. remote-app:指要在遠程桌面上啟動的RemoteApp,

    M. remote-app-dir:遠程應用程序的工作目錄,若果未配置遠程應用,就會忽略此參數;

    N. remote-app-args:遠程應用程序的命令行參數,若果未配置遠程應用,就會忽略此參數;

  2. SSH協議

    A. hostname:連接SSH服務器的主機名或IP地址,必填參數;

    B. port:SSH服務器正在偵聽的端口,默認值是22;

    C. username:身份驗證的用戶名,如果不填寫就會在連接時提示您輸入用戶名;

    D. password:身份驗證的密碼,如果不填寫就會在連接時提示您輸入密碼;

  3. Telnet協議    

    A. hostname:連接Telnet服務器的主機名或IP地址,必填參數;

    B. port:Telnet服務器正在偵聽的端口,默認值是23;

    C. username:身份驗證的用戶名;

    D. password:身份驗證的密碼;

  4. VNC協議  

    A. hostname:連接VNC服務器的主機名或IP地址,必填參數;

    B. port:VNC服務器正在偵聽的端口,默認值是5901;

    C. username:身份驗證的用戶名;

    D. password:身份驗證的密碼;

 

三、代碼講解

  1. 登錄入口:org.apache.guacamole.rest.auth.TokenRESTService

  2. 獲取配置列表:org.apache.guacamole.rest.connectiongroup.ConnectionGroupResource

   3. 與guacd通信的hostnane:org.apache.guacamole.net.InetGuacamoleSocket

 

四、Guacamole定制開發

  1. 自定義身份驗證插件

    A. 繼承org.apache.guacamole.net.auth.simple.SimpleAuthenticationProvider類;

    B. 重寫getIdentifier()和getAuthorizedConfigurations()方法;

    C. 示例:http://guacamole.apache.org/doc/gug/custom-auth.html

  2. 自定義Guacamole應用程序

    A. 繼承org.apache.guacamole.servlet.GuacamoleHTTPTunnelServlet類;

    B. 重寫doConnect()方法;

    C. 在web.xml中配置URL映射隧道;

    D. 編寫js客戶端。

    E. 示例:http://guacamole.apache.org/doc/gug/writing-you-own-guacamole-app.html

 

五、Guacamole客戶端部署

  1. RDP遠程桌面

    A. 防火牆關閉,或相關rdp端口acl配置正確

     B. 開啟主機遠程控制功能

     C. 修改注冊表:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp],修改“SecurityLayer” 項的值為 1,修改 “UserAuthentication” 項的值為 0

  2. RDP遠程應用

    A. 修改注冊表:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList],修改“fDisabledAllowList” 項的值為 1

 

可參考:Guacamole配置手冊

    Guacamole部署及命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM