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部署及命令

posted @ 2020-09-04 15:29  如幻行云  阅读(2611)  评论(0编辑  收藏  举报