guacamole 认识

简介:guacamole是apache开源的一款连接远程机器(类似window机器的mstsc工具以及linux的 xfreerdp远程工具)的web应用。

官网:http://guacamole.apache.org/

一、介绍

1、先看看官网提供的架构图

  • 其中guacamole将架构图中  HTML5(JavaScript编写)以及guacamole server中的guacamole(Java编写)部分打成了一个war包,称之为guacamole-client,部署在tomcat等容器中。
  • guacamole server中的guacd(C编写) 称之为guacamole-server,提供了代理和相关的依赖库。
  • 最终由 guacd 部分通过rdp、vnc等协议(利用依赖库)连接到远程的机器。

2、介绍:guacamole是一个开源的用于连接远程桌面(支持RDP、SSH、VNC等协议) 的Web应用程序,可以实现对远程桌面的访问。用户可以不用安装客户端,而直接通过浏览器访问到不受限制的远程机器。

3、连接流程:用户发起对远程桌面的连接时,浏览器会通过建立在http协议基础上的guacamole协议与web容器中的guacamole部分建立连接,然后将桌面的登录数据发送给后端。web容器中的guacamole获取到前端发送的请求后转发给guacd(本地Guacamole代理),由guacd根据获取的数据进行相应协议的连接。之后浏览器发起的桌面操作也都是先发送给web后端,再由后端转发给guacd,guacd再实际去操作对应的桌面进行鼠标/键盘等控制。

4、guacd:guacd是guacamole实现远程连接的核心,是一个安装在guacamole后台运行的守护进程。

二、guacamole服务端(guacd)部署

服务端为 guacamole-server,为c语言编写的服务。 下面讲两种部署方式:

命令部署方式:

1、编译 guacamole-server 需要安装如下依赖:

sudo yum install cairo-devel libjpeg-turbo-devel libpng-devel libtool uuid-devel

2、安装可选依赖,根据要求安装

(1)提供视频转换功能:    sudo yum install ffmpeg-devel

(2)rdp支持,RDP支持需要FreeRDP 2.0.0或更高版:sudo yum install freerdp-devel

(3)基于终端 ssh、telnet的支持:sudo yum install pango-devel

(4)构建ssh的支持:sudo yum install libssh2-devel

(5)构建telnet支持:sudo yum install libtelnet-devel

(6)构建vnc支持:sudo yum install libvncserver-devel

(7)构建Kubernetes支持: sudo yum install libwebsockets-devel

(8)VNC的实验性音频支持:sudo yum install pulseaudio-libs-devel

(9)加密的支持:sudo yum install openssl-devel

(10)对声音进行压缩:sudo yum install libvorbis-devel

3、下载最新guacd服务包

地址:http://guacamole.apache.org/releases/1.1.0/

包:guacamole-server-1.1.0.tar.gz

4、解压

tar -xzf guacamole-server-1.1.0.tar.gz

5、进入目录

cd guacamole-server-1.1.0/

6、运行configure之后,您可以看到找到了哪些库,以及应该构建哪些库的列表,-with init dir=/etc/init.d将guacd的启动脚本安装到/etc/init.d目录中,命令如下:

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

7、编译安装:

sudo make && make install  

8、更新系统中已安装库的缓存:

ldconfig

9、启动guacd服务

sudo /etc/init.d/guacd start

10、修改服务配置(guacamole默认的配置文件目录为  /etc/guacamole)

根据上面启动后,默认服务端口为 4822, 可以通过 netstat -antl | grep  4822  命令查看主机对该端口进行了监听

可以通过下面方式修改配置:

创建配置文件: /etc/guacamole/guacd.conf,内容如下:

[daemon]
pid_file = /var/run/guacd.pid
log_level = info
[server]
bind_host = 127.0.0.1
bind_port = 4821    #对应服务启动端口号

这个时候重启服务,监听的端口改为 4821

11、配置文件存放路径设置

默认guacamole配置文件存放路径为 /etc/guacamole,我们也可以设置哪些路径的文件作为我们的配置文件:

  • 通过设置系统的 GUACAMOLE_HOME 变量,定义一个存放配置文件的路径
  • 启动程序的用户目录下的  .guacamole 目录下定义的配置文件也会被读
  • 系统的 guacamole.home 属性对应的路径下的配置文件

12、其他配置文件讲解

在配置文件目录下,我们还可以定义其他配置文件:

(1)logback.xml(日志文件的设置,Guacamole使用Logabck来记录日志, 默认记录到console, 也可以指定自己的Logback配置文件):

<configuration>
    <!-- Appender for debugging -->
    <appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 定义日志级别 -->
    <root level="debug">
        <appender-ref ref="GUAC-DEBUG"/>
    </root>
</configuration>

(2)extensions/ 目录

会在对应的配置文件存放目录的 extensions 目录下存放Guacamole的插件, 启动时默认会加载所有以 .jar结尾的文件

(3)lib/

会在对应的配置文件存放目录的 lib 目录下存放Guacamole插件所需要的依赖, 目录下的.jar文件需要对所有插件可读

docker部署方式:

1、pull镜像:docker pull guacamole/guacd

2、启动镜像(映射本地端口4822):docker run --name my-guacd -d -p 4822:4822 guacamole/guacd

3、另外可以在启动镜像的时候带参数,如下:

定义guacd的日志级别:docker run -e GUACD_LOG_LEVEL=debug -d guacamole/guacd

使用本地的网络:docker run --name my-guacd --network host guacamole/guacd

三、guacamole客户端部署

1、命令部署方式:

(1)获取最新war包

官网地址: http://guacamole.apache.org/releases/1.1.0/   

对应的压缩包:guacamole-client-1.1.0.tar.gz

通过tar命令解压获取到一个war包(或者直接源码打包获取):guacamole-1.1.0.war

(2)在配置文件定义目录下,如/etc/guacamole 下,创建配置文件guacamole.properties,该配置文件指定guacamole-client连接哪个机器的guacd以及对应的端口等信息:

# Hostname and port of guacamole proxy
#Guacamole代理的监听地址, 默认localhost
guacd-hostname: localhost 
#Guacamole代理的监听端口, 默认4822
guacd-port:     4821

#Guacamole会话的空连接时间,单位:分钟;  默认:60
#api-session-timeout:

(3)将war包部署到tomcat,启动即可

2、docker部署方式:

(1)pull镜像:docker pull guacamole/guacamole

(2)启动镜像(注意依赖于服务端的 my-guacd):

docker run --name my-guacamole --link my-guacd -d -p 8080:8080 guacamole/guacamole

(3)如果guacd不是通过docker部署的,则启动的时候需要设置guacd的配置:

docker run --name my-guacamole -e GUACD_HOSTNAME=127.0.0.1 -e GUACD_PORT=4822  -d -p 8080:8080 guacamole/guacamole

四、访问

(1)部署完 guacamole-server 和 guacamole-client 后,可以通过浏览器访问,我们启动了8080端口,直接浏览器:

http://127.0.0.1:8080  ,但是这个时候没有任何桌面以及用户信息

(2)在 /etc/guacamole 目录下创建配置文件 user-mapping.xml,内容如下:
 

<user-mapping>
    <!-- 登陆账号密码 -->
    <authorize username="admin" password="123">
        
        <!-- 定义一个通过rdp协议登录的window桌面 -->
        <connection name="windows">
            <protocol>rdp</protocol>
            <param name="hostname">192.168.1.1</param>
            <param name="port">3389</param>
            <!-- 桌面用户名密码 -->
            <param name="username">user</param>
            <param name="password">password</param>
            <!-- 大小自动变化 -->
            <param name="resize-method">display-update</param>
            <!-- 分辨率 -->
            <param name="dpi">100</param>
            <param name="console">true</param>
            <param name="disable-audio">true</param>
            <param name="enable-drive">true</param>
            <param name="drive-path">/usr/guacamole/upload/</param>
            <param name="create-drive-path">true</param>
            <param name="ignore-cert">true</param>
        </connection>

        <!-- 定义一个通过ssh协议登录的centos桌面 -->
        <connection name="centos ssh">
            <protocol>ssh</protocol>
            <param name="hostname">192.168.1.2</param>
            <param name="port">22</param>
        </connection>

        <!-- 定义一个通过vnc协议登录的桌面 -->
        <connection name="vnc">
            <protocol>vnc</protocol>
            <param name="hostname">vncdesktop</param>
            <param name="port">3244</param>
            <param name="password">VNCPASS</param>
        </connection>
    </authorize>
</user-mapping>

这个时候访问浏览器, 输入账号: admin, 密码:123 进行登录。 登录成功后选择对应名称的桌面即可进行相应的登录。

(3)另外可以依赖mysql数据库,将桌面等信息存放到mysql,并支持实时添加桌面进行连接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值