Guacamole搭建

前言:

Guacamole就个人理解而言是一个可以通过web浏览器访问远程服务器终端进行操作的可视化工具。主要由web(浏览器)Guacamole Server(核心)Remote Desktops(远程桌面)三大模块组成。

简介:

Guacamole不是一个独立的Web应用程序,由许多部分组成。Web应用程序实际上旨在简单且最小化,大多数gruntwork由较低级别的组件执行。


用户使用其Web浏览器连接到Guacamole服务器。用JavaScript编写的Guacamole客户端由Guacamole服务器内的Web服务器提供给用户。加载后,此客户端使用Guacamole协议通过HTTP连接回服务器。

部署到Guacamole服务器的Web应用程序读取Guacamole协议并将其转发给guacd(本机Guacamole代理)。该代理实际上解释了Guacamole协议的内容,代表用户连接到任意数量的远程桌面服务器。

Guacamole协议与guacd结合提供了协议不可知性:Guacamole客户端和Web应用程序都不需要知道实际使用的远程桌面协议。

Guacamole协议

Web应用程序根本不了解任何远程桌面协议。它不包含对VNC或RDP或Guacamole堆栈支持的任何其他协议的支持。它实际上只了解Guacamole协议,这是一种用于远程显示渲染和事件传输的协议。虽然具有这些属性的协议自然具有与远程桌面协议相同的能力,但远程桌面协议和Guacamole协议背后的设计原则是不同的:Guacamole协议不旨在实现特定桌面环境的功能。

作为远程显示和交互协议,Guacamole实现了现有远程桌面协议的超集。因此,向Guacamole添加对特定远程桌面协议(如RDP)的支持涉及编写在远程桌面协议和Guacamole协议之间"翻译"的中间层。实现这样的转换与实现任何本机客户端没有什么不同,除了这个特定的实现呈现为远程显示而不是本地客户端。

处理此转换的中间层是guacd。

guacd

guacd是Guacamole的核心,它动态加载对远程桌面协议(称为"客户端插件")的支持,并根据从Web应用程序收到的指令将它们连接到远程桌面。

guacd是一个守护程序进程,它与Guacamole一起安装并在后台运行,侦听来自Web应用程序的TCP连接。guacd也不了解任何特定的远程桌面协议,而是实现了足够的Guacamole协议来确定需要加载哪些协议支持以及必须将哪些参数传递给它。加载客户端插件后,它将独立于guacd运行,并完全控制自身与Web应用程序之间的通信,直到客户端插件终止。

guacd和所有客户端插件依赖于一个公共库libguac,它使通过Guacamole协议的通信更容易,更抽象。

Web应用程序

用户实际与之交互的Guacamole部分是Web应用程序。

如前所述,Web应用程序不实现任何远程桌面协议。它依赖于guacd,并且只实现一个漂亮的Web界面和身份验证层。

我们选择用Java实现Web应用程序的服务器端,但是没有理由不能用不同的语言编写它。事实上,因为Guacamole是一个API,我们鼓励这样做。

RealMint

Guacamole现在是一个通用的远程桌面网关,但情况并非总是如此。Guacamole 最初是一个用JavaScript编写的纯文本Telnet客户端,名为 RealMint("RealMint"是"终端"的字谜)。它主要是作为一个演示而写的,虽然它的目的是有用,但它的主要声誉只是它是纯粹的JavaScript。

RealMint使用的隧道是用PHP编写的。与Guacamole的HTTP隧道相比,RealMint的隧道仅使用简单的长轮询并且效率低下。RealMint有一个不错的键盘实现,它现在存在于Guacamole键盘代码的部分内容中,但这实际上是RealMint功能和可用性的范围。

鉴于它只是遗留协议的一个实现,并且存在其他几个JavaScript终端仿真器,其中大多数已经完善且稳定,该项目被删除。

VNC客户端

一旦开发人员了解了HTML5 canvas标签,并发现它已经在Firefox和Chrome中实现,那么工作就开始于概念验证JavaScript VNC客户端了。

该客户端纯粹是带有Java服务器组件的JavaScript,并通过将VNC转换为基于XML的版本来工作。它的开发自然是由VNC的功能驱动的,其范围仅限于将单个连接转发给一组用户。虽然相对较慢,但概念验证工作得很好,项目需要一个在线居住的地方,并在SourceForge注册为"Guacamole" - 一个HTML5 VNC客户端。

随着Guacamole的发展并不仅仅是概念验证,对速度的需求也在增加,旧的RealMint风格的长轮询被删除了,就像使用XML一样。

由于当时无法信任WebSocket,并且Java没有针对servlet的WebSocket标准,因此开发了一个等效的基于HTTP的隧道。如果WebSocket因任何原因无法使用,今天仍会使用此隧道。

远程桌面网关

开发了一种更快的基于文本的协议,它可以呈现多个远程桌面协议的功能,而不仅仅是VNC。整个系统被重新架构为一个标准守护进程,guacd和一个公共库libguac,它驱动了守护进程和协议支持,后者变得可扩展。

该项目的范围从适当的VNC客户端扩展到高性能的HTML5远程桌面网关和通用API。在当前状态下,Guacamole可用作访问运行不同远程桌面服务器的任意数量计算机的中央网关。它提供可扩展的身份验证,如果您需要更专业的内容,则可以使用基于HTML5的远程访问的通用API。

部署:

系统环境:

CentOS7 + Tomcat8 + JDK18 + guacamole-server0.9.14

安装JDK:

执行命令:

yum install -y java-1.8.0-openjdk-devel.x86\_64

查看是否安装成功:

java -version


安装Tomcat:

下载 :https://tomcat.apache.org/download-80.cgi#8.0.53

解压:

tar -xzvf  apache-tomcat-8.0.53.tar.gz

配置tomcat以service方式启动:

cd /etc/init.d/

vi tomcat


tomcat文本内容:

#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat8
# chkconfig: 234 20 80
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.0.53

case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0

配置完成后可通过service tomcat start 命令启动

访问: http://localhost:8080/


安装Guacamole-Server

安装环境:

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86\_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

yum update -y

安装依赖:

yum -y install cairo-devel libjpeg-devel libpng-devel uuid-devel
yum -y install ffmpeg-devel  freerdp-devel pango-devel libssh2-devel
yum -y install libtelnet-devel libvncserver-devel pulseaudio-libs-devel
yum -y install openssl-devel libvorbis-devel libwebp-devel
yum -y install freerdp-plugins

安装包下载:https://guacamole.apache.org/releases/0.9.14/


解压并安装:

tar -xzvf guacamole-server-0.9.14.tar.gz

cd /guacamole-server-0.9.14/

./configure --with-init-dir=/etc/init.d


make && make install

启动服务:

service guacd start

安装Guacamole-client

将之前下载的guacamole.war包复制在tomcat的webapps下。
mv ./guacamole.war  /usr/local/tomcat/apache-tomcat-8.0.53/webapps

重新启动tomcat:

service tomcat start

配置:

创建/etc/guacamole/文件目录:

mkdir /etc/guacamole/

创建guacamole.properties文件:

cd /etc/guacamole/

vi guacamole.properties


guacamole.properties文本内容:


# Hostname and port of guacamole proxy

guacd-hostname: localhost

guacd-port:     4822

enable-websocket: true

enable-clipboard-integration: true

# auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider

# noauth-config: /etc/guacamole/noauth-config.xml

 auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider

 basic-user-mapping: /etc/guacamole/user-mapping.xml

在/etc/guacamole/目录下创建user-mapping.xml文件:

vi user-mapping.xml


user-mapping.xml文本内容:

<user-mapping>
        <authorize  password="123456" username="admin">
                 <connection name="rdp-windows-zongmin">
                        <protocol>rdp</protocol>
                        <param name="hostname">119.XXXX.121.XXXX</param>
                        <param name="port">3389</param>
                        <param name="username">XXXX</param>
                        <param name="password">XXXXXX</param>
                </connection>
                 <connection name="rdp-192.XXXX.41.XXXX">
                        <protocol>rdp</protocol>
                        <param name="hostname">192.XXXX.41.XXXX</param>
                        <param name="port">3389</param>
                        <param name="username">XXXXX</param>
                        <param name="password">XXXXX</param>
                </connection>
                <connection name="ssh-192.XXXX.41.XXXX">
                        <protocol>ssh</protocol>
                        <param name="hostname">192.XXXX.41.XXXX</param>
                        <param name="port">22</param>
                        <param name="username">XXXXX</param>
                        <param name="password">XXXXX</param>
                        <param name="enable-sftp">true</param>
                        <param name="sftp-hostname">192.XXXX.41.XXXX</param>
                        <param name="sftp-root-directory">/data/sftp</param>
                        <param name="sftp-username">XXXXX</param>
                        <param name="sftp-password">XXXXX</param>
                </connection>
                 <connection name="ssh-192.XXXX.41.XXXX">
                        <protocol>ssh</protocol>
                        <param name="hostname">192.XXXX.41.XXXX</param>
                        <param name="port">22</param>
                        <param name="username">XXXXX</param>
                        <param name="password">XXXXX</param>
                        <param name="enable-sftp">true</param>
                        <param name="sftp-hostname">192.XXXX.41.XXXX</param>
                        <param name="sftp-root-directory">/data/sftp</param>
                        <param name="sftp-username">XXXXX</param>
                        <param name="sftp-password">XXXXX</param>
                </connection>
         </authorize>
</user-mapping>

重新启动服务: service guacd restart

访问: http://localhost:8080/guacamole/#/

登录输入:账号admin密码123456

 PLUS:

————————————————
版权声明:本文为CSDN博主「@桌上的阳光」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Yg854879464/article/details/82151314

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值