Guacamole

一 简介

Apache Guacamole 是基于浏览器的远程桌面访问的解决方案。它支持VNC,RDP,SSH等标准协议。guacamole的客户端是html5 web应用程序,通过访问浏览器,就可以访问到远程桌面。目前经常使用的Microsoft的mstsc,或者VNC,又或者teamviewer,这些都是基于C/S架构的远程桌面连接组件,而guacamole却做到了基于B/S的远程桌面连接。

二 架构

2.1 协议(guacamole)

为了实现对多种远程桌面协议的集成,guacamole实现了一个远程显示和交互的私有协议。
协议包含:握手,绘图,事件,断连等一系列规范。Web应用程序只需要使用Guacamole protocal协议,就可以完成连接的建立,事件消息的传输接收,连接的拆除工作。

2.2 Web应用程序

Guacamole中与用户交互的是Web应用程序。 Web应用程序自己不实现任何的远程桌面协议。它根据Guacamole protocal的内容实现界面展示以及权限认证。原生Web应用程序用Java以及java script语言编写。也可以用其他语言实现web 应用,例如基于python实现的guacamole-django-client。

2.3 guacd 代理服务程序

guacd是Guacamole的“心脏”,它代表客户端执行远程桌面协议,并将远程桌面协议包含的数据转化为Guacamole protocal用于和客户端的交互。 guacd采用插件的方式动态支持远程桌面协议。具体流程是,Web应用程序发来连接远程桌面指令。guacd根据接收到的指令内容,决定加载那个远程协议插件并且传送特定的参数给插件。(远程协议插件就是用来解析具体远程桌面协议的, 完成远程桌面连接功能)一旦插件被加载,插件就独立于guacd运行,对Web应用程序和自己之间的会话(conmunication)具有绝对的控制权,直到插件被关闭。

三 环境搭建

3.1 tomcat安装

  • 1.安装jdk依赖
    yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
  • 2.下载安装tomcat 服务器
Wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz
tar xvf  apache-tomcat-9.0.37.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-9.0.37/ /usr/local/tomcat/

3.2 guacamole server编译安装

  • 1 安装依赖
yum install -y cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel freerdp-devel pango-devel libssh2-devel libvncserver-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel
  • 2 下载guacamole server并编译安装
wget https://mirrors.tuna.tsinghua.edu.cn/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz
tar xvf  guacamole-server-1.2.0.tar.gz -C /usr/local/
mv /usr/local/guacamole-server-1.2.0/ /usr/local/guacamole
cd /usr/local/guacamole
./configure --with-init-dir=/etc/init.d
 make && make install

3.3 guacamole client安装

  • 1 下载guacamole client war包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/guacamole/1.2.0/binary/guacamole-1.2.0.war
  • 2 部署guacamole到tomcat
cp -f guacamole-1.2.0.war /usr/local/tomcat/webapps/guacamole.war

3.4 guacamole配置

  • 1 创建guacamole配置目录
mdkir /etc/guacamole
mdkir /etc/guacamole/{lib,extensions}
  • 2 创建guacamole.properties文件
vi /etc/guacamole/guacamole.properties

输入
guacd-hostname:localhost
guacd-port:     4822
user-mapping:    /etc/guacamole/user-mapping.xml
  • 3 创建logback.xml文件
vi /etc/guacamole/logback.xml

输入

<configuration>
 <appender name="FILE" class="ch.qos.logback.core.FileAppender">
  <file>/opt/guacamole/guacamole.log</file>
   <encoder>
     <pattern>%msg%n</pattern>
   </encoder>
 </appender>
 <root level="debug">
   <appender-ref ref="FILE" />
 </root>
</configuration>
  • 4 创建user-mapping.xml文件
vi /etc/guacamole/user-mapping.xml

输入
<user-mapping>
    <!-- 登陆账号密码 -->
    <authorize username="admin" password="admin">
        <connection name="linux-rdp">
            <protocol>rdp</protocol>
            <param name="hostname">192.168.9.191</param>
            <param name="port">3389</param>
            <param name="username">root</param>
            <param name="password">12345678</param>
        </connection>
        <connection name="linux_cmd">
            <protocol>ssh</protocol>
            <param name="hostname">192.168.9.222</param>
            <param name="port">22</param>
            <param name="username">root</param>
            <param name="password">12345678</param>
        </connection>
        <connection name="linux_vnc">
            <protocol>vnc</protocol>
            <param name="hostname">192.168.9.191</param>
            <param name="port">5901</param>
            <param name="username">root</param>
            <param name="password">12345678</param>
        </connection>
        <connection name="linux_win">
            <protocol>rdp</protocol>
            <param name="hostname">192.168.4.181</param>
            <param name="port">1</param>
            <param name="username">shy</param>
            <param name="password">1</param>
        </connection>
    </authorize>
</user-mapping>

3.5 启动服务

/usr/local/tomcat/bin/startup.sh restart
service guacd restart

3.6 验证

posted @ 2020-07-10 15:03  ZhaoKevin  阅读(1551)  评论(0编辑  收藏  举报