部署Guacamole跳板机平台

Apache Guacamole是一个可以通过浏览器访问远程桌面的应用,它无需在访问者界面部署任何软件(clientless),且支持主流的VNC,RDP,SSH等协议。本文主要介绍如何通过华为云stack部署一个Guacamole平台,支持云外的用户进行远程访问。

部署和架构

Guacamole不是一个完全独立的(self-contained)网络应用,它由一个简单轻量的网络应用搭配主要的底层组件构成的。

当用户通过浏览器连接一个Guacamole服务器时,Guacamole client组件通过内置于Guacamole 服务器的webserver提供给用户(servered to users by a webserver within the Guacamole server)。继而这个client使用Guacamole协议通过HTTP连接回Guacamole服务器。

部署着Guacamole server的网络应用(e.g. apache nginx)读取Guacamole 协议并转发给Guacamole原生代理guacd。 这个代理解析请求并代表用户访问远程桌面服务。

Guacamole协议结合guacd服务共同保证了:无论是Guacamole client还是网络应用都无需感知远程桌面的传输协议。

Guacamole协议

网络应用并不明白任何的远程桌面协议,它只需要理解Guacmole协议。这个协议支持远程显示的渲染和事件的传输工作。

作为一个远程展示和交互的协议,Guacmole整合了当前很多的远程桌面协议。向Guacmole添加一个远程桌面协议可以理解为在远程桌面协议(如RDP)和Guacmole协议直接写入一个中介传输层。操作这个中间层和直接操作本地服务并无太大区别。

这个中介层就是guacd

guacd

guacd是Guacamole的核心,它动态的载入对远程桌面协议的支持,并且接受网络应用的指示连接远程桌面。

guacd是一个守护进程,它与Guacmole一起安装并在后台运行并监听网络应用的TCP连接请求。guacd同样不理解具体的远程桌面协议,但是它通过Guacamole协议知道需要调用并且加载相应的协议插件,当客户端插件(client plugin)被加载,它就可以独立于guacd运行并拥有全部的控制权限直到被关闭。

guacd以及所有的客户端插件都依赖于一个公共包libguac,它使得通过Guacamole协议的交流更加的普适化(abstract)。

网络应用

在Guacamole中,用户直接进行交互的部分是网络应用。它依赖于guacd且仅仅提供认证和网络转发等。

安装Guacamole

Guacamole主要分为2个部分:

guacamole-server提供guacd代理以及相关的依赖。

guacamole-client提供servlent容器(通常为Tomcat)需要的client。

安装guacamole-server

guacamole-server包含所有Guacamole所需的原生的,服务器端的组件。libguac是其中一个公共的C包,它包含了所有基础组件的依赖。

安装guacd会创建一个guacd的守护进程,一般推荐设置为开机自动启动。

在安装之前确保预装了C编译器(e.g. gcc)。

这里我们以CentOS7.6来安装部署一个Guacmole服务。

安装依赖

a. 必选依赖

依赖包名称

说明

Cairo是用语图形化渲染的

libguac依赖它来写PNG图片

安装过程中创建编译包

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

b. 可选依赖

主要是远程桌面协议的一些依赖包

Library name

Features

操作录屏等功能依赖这个包,如果不需要可以跳过

支持RDP连接,一般这个必选

支持文字布局的包,SSH, telnet,kubernetes必选

支持SSH连接

支持telnet连接

支持kubernetes必选

VNC的语音支持,对于云上服务器非必要

ssh,kubernetes必选,加密guacd的通信,支撑ssh的密钥管理

支持WebP,处理图像的扩展

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

# 有些linux版本可能没有相应的包,可以选择跳过

下载源代码

安装Guacamole-server

从下载1.1.0或以上版本。解压

$ tar -xzf guacamole-server-1.2.0.tar.gz

$ cd guacamole-server-1.2.0/

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

checking for a BSD-compatible install... /usr/bin/install -c

checking whether build environment is sane... yes

...

------------------------------------------------

guacamole-server version 1.2.0

------------------------------------------------

Library status:

freerdp2 ............ yes

pango ............... yes

libavcodec .......... yes

libavformat ......... yes

libavutil ........... yes

libssh2 ............. yes

libssl .............. yes

libswscale .......... yes

libtelnet ........... yes

libVNCServer ........ yes

libvorbis ........... yes

libpulse ............ yes

libwebsockets ....... yes

libwebp ............. yes

wsock32 ............. no

Protocol support:

Kubernetes .... yes

RDP ........... yes

SSH ........... yes

Telnet ........ yes

VNC ........... yes

Services / tools:

guacd ...... yes

guacenc .... yes

guaclog .... yes

Init scripts: /etc/init.d

Systemd units: no

Type "make" to compile guacamole-server.

$ make  # 使用make进行编译

Making all in src/libguac

make[1]: Entering directory `/home/zhz/guacamole/guacamole-server/src/libguac'

...

make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server/src/protocols/vnc'

make[1]: Entering directory `/home/zhz/guacamole/guacamole-server'

make[1]: Nothing to be done for `all-am'.

make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server'

$ make install   # 安装

Making install in src/libguac

make[1]: Entering directory `/home/zhz/guacamole/guacamole-server/src/libguac'

make[2]: Entering directory `/home/zhz/guacamole/guacamole-server/src/libguac'

...

----------------------------------------------------------------------

Libraries have been installed in:

/usr/local/lib

If you ever happen to want to link against installed libraries

in a given directory, LIBDIR, you must either use libtool, and

specify the full pathname of the library, or use the `-LLIBDIR'

flag during linking and do at least one of the following:

- add LIBDIR to the `LD_LIBRARY_PATH' environment variable

during execution

- add LIBDIR to the `LD_RUN_PATH' environment variable

during linking

- use the `-Wl,-rpath -Wl,LIBDIR' linker flag

- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for

more information, such as the ld(1) and ld.so(8) manual pages.

----------------------------------------------------------------------

make[2]: Nothing to be done for `install-data-am'.

make[2]: Leaving directory `/home/zhz/guacamole/guacamole-server/src/protocols/vnc'

make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server/src/protocols/vnc'

make[1]: Entering directory `/home/zhz/guacamole/guacamole-server'

make[2]: Entering directory `/home/zhz/guacamole/guacamole-server'

make[2]: Nothing to be done for `install-exec-am'.

make[2]: Nothing to be done for `install-data-am'.

make[2]: Leaving directory `/home/zhz/guacamole/guacamole-server'

make[1]: Leaving directory `/home/zhz/guacamole/guacamole-server'

$ ldconfig # 更新系统缓存

到此安装结束,但是guacd还没有运行,我们需要在Guacamole client安装后运行guacd。

部署Guacamole

直接从下载guacamole.war包,将war包拷贝到/var/lib/tomcat/webapps, 并重启guacd和tomcat服务。

# cp guacamole/target/guacamole-1.2.0.war /var/lib/tomcat/webapps/guacamole.war

#

# /etc/init.d/tomcat7 restart

Stopping Tomcat... OK

Starting Tomcat... OK

# /etc/init.d/guacd start

Starting guacd: SUCCESS

guacd[6229]: INFO:  Guacamole proxy daemon (guacd) version 1.2.0 started

Guacamole配置

Guacamole服务的位置(GUACAMOLE_HOME)一般在/etc/guacamole下,这里包含了所有的配置文件和扩展包。

guacamole.properties

主要的Guacamole服务的配置文件,有关Guacamole服务认证、连接等的配置都在这个文件定义。

logback.xml

日志配置,可以选择日志等级。

extensions/

放置Guacamole扩展.jar包的位置

lib/

有些Guacamole扩展.jar包的依赖包的放置位置

数据库认证的配置

首先要在系统预装数据库,Guacamole支持MariaDB,MySQL,PostgreSQL,SQL Server这里以mysql来举例。

同样的到下载guacamole-auth-jdbc-1.2.0.tar.gz包。其中guacamole-auth-jdbc-mysql-1.2.0.jar需要放在extensions/下。访问MySQL官网下载JDBC driver(mysql-connector-java-5.1.47-bin.jar)并放入lib下。

创建Guacamole数据库

首先在mysql中创建数据库

$ mysql -u root -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 11

Server version: 5.7.20

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_root_password';

Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE guacamole_db;

Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'guacamole_user_password';

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

mysql> quit

Bye

# 使用初始化脚本为数据库创建数据表

$ ls schema/

001-create-schema.sql  002-create-admin-user.sql  upgrade

$ cat schema/*.sql | mysql -u root -p guacamole_db

Enter password: new_root_password

接下来配置数据库认证文件

vim guacamole.properties

# 贴入下面几行

# MySQL properties

mysql-hostname: localhost

mysql-port: 3306

mysql-database: guacamole_db

mysql-username: guacamole_user

mysql-password: some_password

到此安装配置结束,之后就可以通过guacamole平台进行管理了,默认用户密码为guacadmin/guacadmin.

guacamole 源码_部署Guacamole跳板机平台相关推荐

  1. 一件代发系统php网站源码_靠谱礼品代发平台网站一件代发(0.5元)

    小礼品一件代发-礼品代发平台网站(安全可靠)小礼品一件代发-礼品代发平台网站(安全可靠) 阁下所问,我却是不知道该如何回答了,阁下要不请入我大殿,由我苯教好生招待于阁下如何?"那僧人见钟文回 ...

  2. javaVue垃圾分类指南平台设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部署

    javaVue垃圾分类指南平台设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 javaVue垃圾分类指南平台设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部 ...

  3. java车辆保险平台系统研究与设计计算机毕业设计MyBatis+系统+LW文档+源码+调试部署

    java车辆保险平台系统研究与设计计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 java车辆保险平台系统研究与设计计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 本源码技 ...

  4. guacamole 源码_guacamole实现上传下载

    看到首先服务端向客户端发送了filesystem请求,紧接着浏览器向服务端发送了get请求,并且后面带有根目录标识("/"). 1. 源码解读 查看指令 /** * Handler ...

  5. 【Guacamole中文文档】二、用户指南—— 2.Guacamole源码安装

    Guacamole源码安装 Guacamole分为两部分:guacamole-server,提供Guacamole代理和相关库:以及guacamole-client,提供通过servlet容器(通常是 ...

  6. Python基于OpenCV的人脸表情识别系统[源码&部署教程]

    1.项目背景 人脸表情识别是模式识别中一个非常重要却十分复杂的课题.首先对计算机人脸表情识别技术的研究背景及发展历程作了简单回顾.然后对近期人脸表情识别的方法进行了分类综述.通过对各种识别方法的分析与 ...

  7. 计算机毕业设计JAVA电影推荐网站mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA电影推荐网站mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA电影推荐网站mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B ...

  8. java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

  9. java毕业设计能源控制系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计能源控制系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计能源控制系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S架构 开 ...

最新文章

  1. yum安装mysql步骤及报错ERROR 1045 (28000)
  2. BZOJ 2434 阿狸的打字机
  3. linux 访问windows共享
  4. MySQL 5.1 安装过程中报apply security setting错误的解决办法 收藏
  5. Storm 疑难杂症。
  6. 《算法》C++代码 前言
  7. 33 FI配置-财务会计-应收账款和应付账款-定义预付款的备选统驭科目
  8. fastadmin token 验证错误_用签名保护你的隐私(4)--token生成
  9. 解决wine中文显示为方框的方法
  10. Linux设备驱动开发入门之——hello驱动
  11. 软件安全测试是为了什么,一航软件测评有这些见解
  12. 健身用肌酸市场前景分析及行业研究报告
  13. springboot 之 Starter
  14. 域名申请攻略(以godaddy+支付宝为例)
  15. bzoj3167[HEOI2013]SAO
  16. 建立KMS服务器,激活WIN、office
  17. 苹果手机解压缩软件_解压缩全能王app下载-解压缩全能王app手机版
  18. Linux网络相关命令:netstat,ss
  19. HDOJ2000题Java代码
  20. 青村茶舍||“清明寄哀思”乡风建设活动

热门文章

  1. 智能童书借阅柜-实现儿童绘本流转模式
  2. c语言+usb驱动开发,usb驱动程序分析
  3. SQL SERVER 2016 ctp3.3安装
  4. Spring Cloud Alibaba搭建(二):Nacos注册中心
  5. css3新增动画属性(过度动画 变形动画 关键帧动画)
  6. 极路由饥饿营销引质疑 联合创始人拿数据正面回应
  7. 如何解决 cdo转换经度-180~180 为0~360时出现报错:cdo sellonlatbox: Unsupported grid type: generic的问题
  8. Spring Data ElasticSearch的操作
  9. spring cloud实践
  10. 【愚公系列】2023年06月 网络安全(交通银行杯)-文件类型分析和社工