guacamole web网关平台的使用

2018年12月10日 发表评论 阅读评论

一、guacamole是什么

guacamole是一个完全可以通过web界面来管理连接VNC、SSH、RDP(windows远程桌面)、telnet相关协议连接的一套组件 。其是基于Websocket +  HTTP的方式实现的连接 。其架构图如下:

guacamole-arch

从上图也可以看出Guacamole有2个部分构成:

  • Guacamole-server: 提供代理和相关依赖库
  • guacamole-client: 提供服务端容器(如Tomcat)运行的客户端

上图中的 guacd 就是server编译后对接出的命令,而 client端安装比较将单就是一个tomcat war项目,可以使用管方编译好的,也可以自行下载源码,使用mvn编译出war 文件。

更详细的项目介绍可以查看官方文档:http://guacamole.apache.org/doc/gug/guacamole-architecture.html ,也可以查看国中翻译版本:https://www.cnblogs.com/ji-yun/p/5657709.html 

二、guacamole server的安装 

server 前需要安装一些依赖,其中必选依赖如下:

  • Cairo 是被libguac 用来绘图的. 没有它Guacamole就实现不了此功能
  • libjpeg-turbo 为libguac 提供 JPEG 的支持。没有它Guacamole就无法编译。libjpeg-turbo 在你的平台上不可用, 并且你不希望用源码编译它, libjpeg 也会照常工作,只是速度不会那么快
  • libpng 被 libguac 用来写PNG 图像, 它是Guacamole 协议使用的核心图像类型. Guacamole 没有libpng就不能正常运转..
  • OSSP UUID 被libguac 用来设计每一个Guacamole连接唯一的 ID. 这些唯一的ID是连接分享的基础。

除此之外还有可选依赖,可选依赖主要是几个连接协议对应的包。具体可以在官网:http://guacamole.apache.org/doc/gug/installing-guacamole.html 找到相关内容。

这里以centos6/7为例,介绍下安装过程(安装前,请先装下epel 源,因为一些包在base源中没有):

1、安装必须依赖

yum -y install cairo-devel libjpeg-turbo-devel libjpeg-devel libpng-devel uuid-devel

安装完可能会提示:No package uuid-devel available. ,这就需要通过源码编译来安装此依赖,通过guacamole官方链接的uuid包的官方无法正常下载(ftp://ftp.ossp.org/pkg/lib/uuid/uuid-1.6.2.tar.gz),我这里使用了镜像站的下载地址:http://www.mirrorservice.org/sites/ftp.ossp.org/pkg/lib/uuid/uuid-1.6.2.tar.gz 可以成功下载。下载好后,使用下面的命令编译即可:

./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc

2、可选依赖

yum -y install freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel pulseaudio-libs-devel openssl-devel  libvorbis-devel libwebp-devel

这里命令执行后也会提示有个别包未安装,如果必须要的,可以自行手动编译,如果未使用到该协议的,不成功也没关系。我这里因为主要是测试使用,有两个包也未成功安装,在编译guacamole的时候,界面如下:

guacamole

从上图看出,只有 vnc 协议不支持,其他协议的支持并不受影响。 

3、guacamole server安装编译

guacamole server的下载地址为:http://guacamole.apache.org/releases/0.9.14/  解包后,通过如下命令进行安装:

cd guacamole-server-0.9.14
./configure --with-init-dir=/etc/init.d
make
make install 

安装成功后,在/etc/init.d目录下会有guacd 的服务产生。

三、guacamole client安装

还是打开上面的下载地址,找到对应的client的war文件下载,下载之前也请登陆tomcat.apache.org下载tomcat包(也可以使用源里带的tomcat包),我这里选择的tomcat.apache.org上下载的。将对应下载的war文件存放到tomcat的webapp目录(先清空该目录里的哪些管理功能 ---- 留着就是祸害,很容易被漏洞利用或默认获权)。

如果想要源码编译,可以使用如下命令生成war文件:

git clone git://github.com/glyptodon/guacamole-client.git
mvn package

个人觉得如非二次开发之类的需求,跟本无需使用mvn命令编译生成war包,官方提供的war就可以。正常启动后,就可以打开对应的web登陆界面。

guacamole-client

注:不像很多web程序,这里没有默认的用户名密码,用户名密码是需要后面进行配置的。

四、基础认证与配置

基础认证就是要连接的主机信息和用户信息都不存在数据库里,只保存在相应的文件里即可。默认使用的是基础认证(当然程序支持各种流行的后端认证方式:mysql 、plsql、sqlserver、openldap、还有二次验证等,这个后面再说)。

1、 GUACAMOLE_HOME

 GUACAMOLE_HOME 就是guacamole的配置存放的目录 ,其可以从如下三个地方读取:

1: 系统的guacamole.home属性
2: 系统的GUACAMOLE_HOME变量
3: 运行程序用户的.guacamole目录

这里我们就根据默认惯例使用/etc/guacamole/目录存放配置文件,也无需使用其他环境变量(另两种情况主要是针对普通用户安装时对/etc目录没有写权限的情况)。该目录下可以使用的配置和参数如下:

guacamole.properties:
    决定Guacamole如何连接到guacd, 也可以定义插件
    api-session-timeout:
        单位: 分钟
        默认: 60
        Guacamole会话的空连接时间
guacd-host:
    Guacamole代理的监听地址, 默认localhost
guacd-port:
    Guacamole代理的监听端口, 默认4822
guacd-ssl:
    Web应用和guacd之间是否使用SSL/TLS, 默认false
logback.xml:
    Guacamole使用Logabck来记录日志, 默认记录到console, 也可以指定自己的Logback配置文件
    服务代理程序默认会记录日志.
extensions/:
    存放Guacamole的插件, 启动时默认会加载所有已.jar结尾的文件
lib/
    Guacamole会在这里寻找插件所需要的依赖, 改目录下的.jar文件对所有插件可读

2、guacamole.properties配置

创建/etc/guacamole/guacamole.properties文件,这里我们只简单的写四行就行了:

guacd-hostname: localhost
guacd-port:     4822
user-mapping:  /etc/guacamole/user-mapping.xml
enable-clipboard-integration: true

前两行是server的地址和端口,如果client web和server未安装在同一台上,也可以配置其他IP。

3、user-mapping.xml配置

配置示例如下:

<user-mapping>
	<authorize username="itybku" password="319f4d26e3c536b5dd871bb2c52e3178" encoding="md5">
	<connection name="testhost10">
                <protocol>ssh</protocol>
                <param name="hostname">192.168.1.10</param>
                <param name="port">22</param>
                <param name="username">root</param>
                <param name="password">123456</param>
                <param name="enable-sftp">true</param>  #sftp参数配置(没有安装则以下sftp可不用添加)
                <param name="sftp-hostname">192.168.1.10</param>
                <param name="sftp-root-directory">/data/sftp</param>
                <param name="sftp-username">sftp</param>
                <param name="sftp-password">123456</param>
                <param name="color-scheme">white-black</param> #远程登录显示字体颜色
	</connection>
	<connection name="Windows server">
	       <protocol>rdp</protocol>
	       <param name="hostname">192.168.0.19</param>
	       <param name="port">3389</param>
               <param name="username">administrator</param>
	</connection>
	</authorize>
</user-mapping>

其中itybku是登陆web界面的用户名密码,后面的password是使用md5加密的密码,具体可以使用如下方法生成加密密码:

printf '%s' "www.361way.com" | md5sum

当然web界面的用户名密码也可以使用明文配置,只需要更换authorize 为如下内容:

<authorize username="itybku" password="PASSWORD" >

该文件里可以配置多个用户,不用的用户管理不同的主机。

五、启用管理

使用下面的命令启动guacamole及其管理界面:

/etc/init.d/guacd start
sh startup.sh  (tomcat目录)

登陆管理界面,就可以查看对应的主机信息如下:

guacamole-web

进期连接过的主机会以缩略图的方式在上面显示。此时也可以使用chrome浏览器,F12打开发模式界面,在console里查看websocket的连接信息,你如果足够牛X,也可以看下源码,在浏览器的console里进行websocket交互。

本篇同容先到这里,后面可以聊下连接数据的配置。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: http/html/web, 开源软件 标签:
  1. 本文目前尚无任何评论.
  1. 2018年12月17日11:59 | #1