当前位置: 首页 > news >正文

在ubuntu中搭建guacamole

【写于2016年8月15日】

【由于我目前没有时间尝试其他linux系统下的搭建工作,所以这篇帖子仅针对在ubuntu下搭建guacamole的情况】

在搭建guacamole之前,需要先准备好操作系统环境,如果可行的话,建议安装最新版的ubuntu(我用一个旧版本(12.04)的搭建的时候,遇到了一些依赖项太老而不兼容的问题,在换了最新版的ubuntu16.04后,这些问题,都没再出现)。这里提供了两种安装方式,可以根据自己的需求任选其一。

 

在开始之前,先理解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交互)。

 

 

0.系统概览

 

 

guacamole作为代理,连接任意位置的RDP server(guacamole和rdp server可以在同一台机器上)。手机和PC,只要有浏览器,且浏览器支持HTML5,那么就可以用浏览器访问guacamole代理。

 

1.最简安装方式

 

首先是有一个最简的安装过程,共三个步骤。

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

转载于:https://www.cnblogs.com/zhang-ming/p/5772227.html

相关文章:

  • unittest参数化
  • NTP服务器时间同步
  • jquery中的基本理解以及样式属性操作
  • 机票分享第一篇 机票由何而来
  • 马斯克“地狱”归来,回应一切
  • win7 打开office失败并提示“向程序发送命令错误” 解决方法
  • 开发一个自己的天气chrome extension
  • Tomcat for Eclipse
  • 深度学习人工智能离我们还有多远?
  • eclipse内存设置参数
  • 2018一半小结一波
  • GTX 770 (GK 104)
  • JSP和Servlet的区别
  • [转]关于矩阵的本质
  • C# Enum 类型遍历
  • CSS中外联样式表代表的含义
  • Github访问慢解决办法
  • idea + plantuml 画流程图
  • iOS编译提示和导航提示
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • isset在php5.6-和php7.0+的一些差异
  • Travix是如何部署应用程序到Kubernetes上的
  • Web设计流程优化:网页效果图设计新思路
  • 时间复杂度与空间复杂度分析
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 手写一个CommonJS打包工具(一)
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 追踪解析 FutureTask 源码
  • 06-01 点餐小程序前台界面搭建
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​【已解决】npm install​卡主不动的情况
  • # 安徽锐锋科技IDMS系统简介
  • (1)常见O(n^2)排序算法解析
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (31)对象的克隆
  • (C#)一个最简单的链表类
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (南京观海微电子)——COF介绍
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (转) ns2/nam与nam实现相关的文件
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET DataGridView数据绑定说明
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET4.0并行计算技术基础(1)
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET值类型变量“活”在哪?
  • .net中调用windows performance记录性能信息
  • @Conditional注解详解
  • @RunWith注解作用
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ C++ ] STL---stack与queue