在ubuntu中搭建guacamole

【写于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这两个配置文件的具体使用方法。(英文文章)

相关文章
相关标签/搜索