Centos7 部署guacamole1.1.0

Centos7 部署guacamole1.1.0

前言:

因项目需要,经历多天查阅各种文档,几经波折终于功德圆满,写下此篇文章供大家分享。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 + Tomcat9 + JDK1.8 + guacamole-server1.1.0

一 、配置编译环境

1、安装系统开发环境

# 配置源
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 groupinstall "Development Tools"
yum install -y java-1.8.0-openjdk-devel.x86\_64

2、安装wget等工具

yum install wget -y
yum install make -y
yum install gcc -y
yum install gcc-c++ -y

3 、安装依赖包

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

二、编译安装 guacamole-server

cd /root
wget https://mirrors.tuna.tsinghua.edu.cn/apache/guacamole/1.1.0/source/guacamole-server-1.1.0.tar.gz
tar -zxvf guacamole-server-1.1.0.tar.gz
cd guacamole-server-1.1.0
./configure --with-init-dir=/etc/init.d
make && make install
ldconfig

#允许随系统启动
systemctl enable guacd
#开启服务
systemctl start guacd
#查看服务进程
systemctl status guacd

配置:
1、创建/etc/guacamole/文件目录

mkdir /etc/guacamole/

2、创建guacamole.properties文件

cd /etc/guacamole/
vim 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

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

vim user-mapping.xml
<user-mapping>
        <authorize  password="123456" username="admin"> <!--WEB登录用户名、密码 -->
                 <connection name="192.168.1.xxx"> <!--连接名称-->
                        <protocol>rdp</protocol> <!--协议-->
                        <param name="hostname">192.168.1.xxx</param> <!--IP-->
                        <param name="port">3389</param> <!--端口号-->
                        <param name="username">xx</param> <!--用户名-->
                        <param name="password">xxx</param> <!--密码-->
                        <param name="ignore-cert">true</param> <!--http://guacamole.apache.org/doc/1.1.0/gug/configuring-guacamole.html-->
                        <param name="security">nla</param> <!--RDP连接的安全模式-->
                </connection>
                 <connection name="192.168.75.xxx">
                        <protocol>rdp</protocol>
                        <param name="hostname">192.168.75.xxx</param>
                        <param name="port">3389</param>
                        <param name="username">xxx</param>
                        <param name="password">xxx</param>
                        <param name="ignore-cert">true</param>
                        <param name="security">nla</param>
                </connection>
                <connection name="ssh-192.168.1.xxx">
                        <protocol>ssh</protocol>
                        <param name="hostname">192.168.1.xxx</param>
                        <param name="port">22</param>
                        <param name="username">xxx</param>
                        <param name="password">xxxx</param>
                        <param name="enable-sftp">true</param>
                        <param name="sftp-hostname">192.168.1.xxx</param>
                        <param name="sftp-root-directory">/data/sftp</param>
                        <param name="sftp-username">xxx</param>
                        <param name="sftp-password">xxx</param>
                </connection>
         </authorize>
</user-mapping>

三、安装Tomcat

cd /root
wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz
tar -zxvf apache-tomcat-9.0.35.tar.gz
mv apache-tomcat-9.0.35 tomcat
cp -r tomcat /usr/local/

1、配置 systemctl 文件

vim /lib/systemd/system/tomcat.service
[Unit]
Description=tomcat
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

授予适当的权限

chmod 754 /lib/systemd/system/tomcat.service

#启动服务
systemctl start tomcat.service
#关闭服务
systemctl stop tomcat.service
#开机启动
systemctl enable tomcat.service

安装 guacamole客户端

cd /root
wget https://mirror.bit.edu.cn/apache/guacamole/1.1.0/binary/guacamole-1.1.0.war
mv guacamole-1.1.0.war guacamole.war
cp guacamole.war /usr/local/tomcat/webapps/
systemctl start tomcat.service

四、配置防火墙

systemctl start firewalld
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

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

如有错误,请批评指正。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Guacamole是一个开源的远程桌面网关,可以让你通过Web浏览器访问远程计算机的桌面环境。下面是在CentOS 7上安装Guacamole的步骤: 1. 更新系统: ``` sudo yum update ``` 2. 安装依赖: ``` sudo yum install epel-release sudo yum install wget sudo yum install cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel ``` 3. 安装Tomcat: ``` sudo yum install tomcat ``` 4. 下载Guacamole: ``` wget https://downloads.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz ``` 5. 解压并编译Guacamole Server: ``` tar -xzf guacamole-server-1.3.0.tar.gz cd guacamole-server-1.3.0 ./configure --with-init-dir=/etc/init.d make sudo make install sudo ldconfig ``` 6. 配置Guacamole Server: ``` sudo mkdir /etc/guacamole sudo mv guacamole-auth-jdbc-1.3.0.tar.gz /etc/guacamole/ cd /etc/guacamole sudo tar -xzf guacamole-auth-jdbc-1.3.0.tar.gz sudo mv guacamole-auth-jdbc-1.3.0/mysql/guacamole-auth-jdbc-mysql-1.3.0.jar /usr/share/tomcat/.guacamole/extensions/ ``` 7. 配置MySQL数据库: ``` sudo yum install mariadb-server sudo systemctl start mariadb sudo mysql_secure_installation sudo mysql -u root -p CREATE DATABASE guacamole_db; CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost'; FLUSH PRIVILEGES; quit; ``` 8. 配置Guacamole的数据库连接: ``` sudo nano /etc/guacamole/guacamole.properties ``` 在文件中添加以下内容: ``` mysql-hostname: localhost mysql-port: 3306 mysql-database: guacamole_db mysql-username: guacamole_user mysql-password: your_password ``` 9. 部署Guacamole Web应用: ``` sudo mv guacamole-1.3.0.war /var/lib/tomcat/webapps/guacamole.war sudo systemctl restart tomcat ``` 10. 配置防火墙: ``` sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload ``` 现在,你可以通过浏览器访问`http://your_server_ip:8080/guacamole`来使用Guacamole了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值