【Guacamole#1】Guacamole介绍及安装

2017年9月8日 11 条评论 2.49k 次阅读 2 人点赞

一、Guacamole介绍

Guacamole是一个提供了基于HTML5 web应用程序的远程桌面代理服务器。通过使用Guacamole服务器,我们很轻松的在浏览器上远程访问Guacamole代理的主机。

我们可以在浏览器访问Guacamole页面的时候,此时,浏览器会通过HTTP使用Guacamole协议与Guacamole 服务器中的Web服务器进行连接。Guacamole Web应用会从用户的请求中读取Guacamole协议,并将其转发给guacd(本地Guacamole代理)。Guacd根据web 应用转发过来的Guacamole协议来代替用户连接到远程桌面服务器。在Guacamole Web应用与guacd进行通信的时候,两者均不需要知道实际使用的远程桌面协议是什么,即协议不可知性

在Guacamole的组成中主要包含如下三部分:

  1. Guacamole协议是用于远程显示和事件传输的协议,不实现特定的桌面环境支持,实现了现有远程桌面的超集。
  2. guacd是Guacamole的核心,guacd也不了解任何具体的远程桌面协议,而是实现了通过web应用转发的Guacamole协议来确定哪些协议需要加载,哪些参数必须传递给它。
  3. web应用程序是Guacamole与用户进行交互的部分。Apache提供了基于Java的编写的Web应用程序,但是这并不代表Guacamole 只支持Java。Guacamole是一个API。

二、Guacamole Server安装

采用的服务器是在VMware WorkStation上运行的CentOS 7.3作为Guacamole Server,同时在VMware WorkStation上安装两台测试虚拟机,操作系统为Ubuntu 17 和Windows 10虚拟机各一台。此次主要安装的是Guacamole 0.9.13.

1、安装必要环境

这些必要的环境主要是指编译Guacamole Server时所需要的工具及其依赖项所需要的软件源。

2、安装依赖项

我安装的依赖项包括必须安装的依赖项和可选依赖项的全部。

3、获取、编译和安装Guacamole Server

4、启动guacd

三、Guacamole Client安装

Guacamole Client的安装其实是相当简单的主要就是安装支持Java的Web服务器和Guacamole Client war包。

相关安装日志请查看《【Guacamole#6】Guacamole Server 编译安装日志》

四、Guacamole配置

Guacamole默认从其自己的配置文件目录中读取配置文件,仅在找不到配置文件的情况下才会使用类路径。Guacamole查找配置文件的目录的顺序如下:

  1. 在系统属性guacamole.home中指定的目录 。
  2. 在环境变量中指定的目录 GUACAMOLE_HOME。(env, /etc/profile)
  3. 该目录.guacamole位于运行servlet容器的用户的主目录中。(Tomcat根目录)

GUACAMOLE_HOME目录中主要有Guacamole主配置文件guacamole.properties,Guacamole Logback的日志记录系统配置文件logback.xml,Guacamole扩展的安装位置extensions文件夹,Guacamole扩展所需的库lib文件夹

在我这次搭建中主要使用到了默认的认证方式user-mapping.xml,guacamole.properties配置如下。

采用了默认认证方式user-mapping.xml,具体配置如下。

 

在user-mapping.xml中<authorize>标签添加一个用户,在该标签中username参数是用户登录名,password是用户登录密码,encoding是加密方式(该参数为可选)。

 

在<authorize>标签中添加一个<connection>标签,即为用户添加一个连接,参数name是连接名称。

Gucamole配置具体操作如下:

1、创建GUACAMOLE_HOME和配置文件

2、配置Guacamole

上述脚本需要注意:

这两条很关键,tomcat的目录不一定是/user/shares/tomcat ,可能是/usr/share/tomcat。如果软链接为创建失败,会导致在Guacamole登录失败,并提示 Invalid Login。

五、测试

在浏览器中打开Guacamole Web应用,地址为http://Guacamole_Server_IP:8080/guacamole

Guacamole登录界面

Guacamole登录界面

下图为guacamole登录后显示的页面。

Guacamole web页面

下图是“CentOS 7 TigerVNC”连接结果,主要测试TigerVNC,采用VNC协议。

CentOS 7 TigerVNC

下图是“Windows 10(Test)”连接的结果展示,测试RDP。

Windows 10(Test)

下图是"CentOS SSH"连接结果,测试SSH。

CentOS SSH

下图是“Ubuntu x11vnc”,测试x11vnc。

Ubuntu x11vnc

六、总结

Guacamole对RDP、VNC以及SSH支持还是比较完美的。我仅仅简单地测试了RDP、VNC和SSH三种协议以及一些比较简单的功能。在后期的文章中将会详细介绍连接参数、常见错误分析以及其他验证方式。

realks

这个人太懒什么东西都没留下

文章评论(11)

  • Ivan

    teamviewer 和splashtop 都挺好用的,第一个完全对个人免费,第二个非同一个局域网收费。这俩的实时性都挺好。如果基于html5的话,实时性能做到类似于这种软件么?本宝宝很好奇。

    2017年9月20日
    • realks

      @Ivan 其实实时性和协议有关。Guacamole只是一个代理工具,通过这个工具我们可以在只有一个公网IP的情况下访问多个内网主机。

      2017年9月20日
  • geo

    按照楼主进行配置的,为什么总是提示Invalid Login,盼复

    2018年5月9日
    • realks

      @geo 我测试了一下,按照我的流程配置是没有问题的。检查一下你的配置是否正确。

      2018年5月10日
      • geo

        @realks 谢谢!目前可以登录了,但是无法使用rdp和vnc远程连接windows远程桌面,连接时出现:
        The remote desktop server is currently unreachable. please notify your system administrator, or check your system logs.请问是什么原因?请大侠指点

        2018年5月13日
        • realks

          @geo 1、确保用其它的设备通过RDP、VNC 可以访问你的目标主机,即确保目标主机相关服务已启动,且目标主机的防火墙允许3389端口(RDP),5900+X 端口(VNC)入站。
          2、确保guacd 在运行状态, ps -ef | grep guacd。

          2018年5月13日
          • geo

            @realks 使用guacamole部署的主机centos的远程工具可以连接上window server2012
            guacd运行状态也是正常的
            root 11750 1 0 12:40 ? 00:00:01 guacd
            root 16783 10111 0 13:46 pts/0 00:00:00 grep --color=auto guacd

            备注:centos是部署的hyper-v的虚拟机上,ssh可以连接上,vnc和rdp都无法连接

            2018年5月13日
          • realks

            @geo 这是我刚刚创建的虚拟机,按照博客中的过程部署的Guacamole 0.9.13.你可以看看与你有什么区别。

            链接:https://pan.baidu.com/s/1adfADbFYiuJT-uYkLIuIsA 密码:fuob

            虚拟机用户名root,密码abc@DEF123

            2018年5月13日
  • aaa

    楼主你好,我得按照你的配置好后,win的无法访问可能是什么原因?看控制台报错为: Failed to load cliprdr plugin. Clipboard will not work. Error connecting to RDP server,依赖都已经装好了,我系统为centos 7

    2018年5月11日