guacamole安装搭建
guacamole安装搭建
- guacamole-1.0.0的安装配置
环境:tomcat9.0 + openjdk version "1.8.0_212" + centos7.5
安装依赖
-
必须安装的依赖
libguac使用Cairo进行图形渲染。如果没有安装Cairo,鳄梨酱就无法运作。
libguac使用libjpeg-turbo来提供JPEG支持
libgung使用libpng来编写PNG图像
libguac使用OSSP UUID为每个Guacamole连接分配唯一ID。yum -y install cairo-devel libjpeg-devel libpng-devel uuid-devel
-
可选安装的依赖
Guacamole的可选依赖项决定了guacamole-server的哪些部分 将被构建。这包括对各种远程桌面协议的支持,以及这些协议的任何其他功能:
-
VNC支持取决于libvncclient库,它是libVNCServer的一部分。
pulseaudio 提供VNC的实验性音频功能yum install libvncserver-devel pulseaudio-libs-devel
-
RDP支持取决于最新版本的FreeRDP(1.0或更高版本,但请不要使用git的非发行版本)。
yum install freerdp-devel
-
SSH支持依赖于
libssh2 SSH支持。
OpenSSL 提供对SSL和TLS的支持。
Pango 一种字体渲染和文本布局库,由Guacamole的内置终端仿真器使用。yum install libssh2-devel openssl-devel pango-devel
-
Telnet依赖于libtelnet和 Pango。(libtelnet-devel不在CentOS7官方yum源内,可先安装epel-release源)
yum install libtelnet-devel pango-devel
-
guacenc(将屏幕录制转换为视频)实用程序 依赖于FFmpeg,并且仅在安装了FFmpeg提供的libavcodec,libavutil和 libswscale库时才构建 。(ffmpeg-devel不在CentOS7官方yum源内,可先安装DEXTOP源) 不需要屏幕录制功能时,可不安装。
yum install ffmpeg-devel
-
libvorbis支持Ogg Vorbis - 一种免费且开放的声音压缩标准。如果安装了libguac,将支持Ogg Vorbis,支持音频的协议将尽可能使用Ogg Vorbis压缩。否则,声音将仅编码为WAV(未压缩),并且仅在您的浏览器也支持WAV时才可用。
yum install libvorbis-devel
-
libgubp由libgub用于编写WebP图像。尽管Guacamole协议并未强制支持WebP,但如果浏览器和libguac都支持WebP图像,则会使用WebP图像。
yum install libwebp-devel
-
使用剪切板需要安装的依赖
yum -y install freerdp-plugins
为了体验完整功能,以上全部安装。
如果你只想直接搭建的话请复制粘贴即可
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 ##不安装剪切板不能用
下载相关的软件包
我们使用的ldap加mysql双重认证的方式,用户登录控制走ldap,用户的权限控制走mysql
-
下载guacamole-server
wget https://mirrors.tuna.tsinghua.edu.cn/apache/guacamole/1.0.0/source/guacamole-server-1.0.0.tar.gz
-
下载guacamole-client 这个client是对于guacd来说的。对于用户来说还是server端
wget https://mirrors.tuna.tsinghua.edu.cn/apache/guacamole/1.0.0/binary/guacamole-1.0.0.war
-
下载ldap相关依赖插件包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/guacamole/1.0.0/binary/guacamole-auth-ldap-1.0.0.tar.gz
-
下载mysql依赖包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/guacamole/1.0.0/binary/guacamole-auth-jdbc-1.0.0.tar.gz
-
下载tomcat
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.19/bin/apache-tomcat-9.0.19.tar.gz
安装guacamole-server
tar xvf guacamole-server-1.0.0.tar.gz
cd guacamole-server-1.0.0
./configure --with-init-dir=/etc/init.d
make & make install & ldconfig
/etc/init.d/guacd start guacd
这个进程才是真正的server。所有的连接都是这个进程完成的
启动这个进程以后会默认监听127.0.0.1的4822端口
安装guacamole-client
cd /data/w/www
tar xvf apache-tomcat-9.0.19.tar.gz
mv apache-tomcat-9.0.19 guacamole.corp.bianlifeng.com
cp /root/guacamole-1.0.0.war guacamole.corp.bianlifeng.com/webapps/
cd guacamole.corp.bianlifeng.com/
./bin/startup.sh
配置guacamole.properties文件
mkdir /etc/guacamole/
vim /etc/guacamole/guacamole.properties
hostname:localhost # 这个是guacd进程所在的地址
guacd-port:4822 # guacd端口
enable-clipboard-integration:true
# mysql的配置
mysql-hostname: rw-common-ops-mysql.vip.blibee.com
mysql-port: 33006
mysql-database: guacamole
mysql-username: guacamol_9p_rw
mysql-password: 9AnC6gbsgS14zwxi
# ldap的配置
ldap-hostname: ad.vip.blibee.com
ldap-port: 389
ldap-user-base-dn: ou=allusers,ou=blf,dc=corp,dc=bianlifeng,dc=com
ldap-search-bind-dn: CN=bind_******,OU=Ldap_User,OU=OtherUser,DC=corp,DC=bianlifeng,DC=com
ldap-search-bind-password:*****
ldap-username-attribute: sAMAccountName
ldap-user-search-filter:(objectClass=user)
ldap-max-search-results: 40000
配置mysql和ldap
搞个库然后把表导入就行
tar xvf guacamole-auth-jdbc-1.0.0.tar.gz
tar xvf guacamole-auth-ldap-1.0.0.tar.gz
mkdir /etc/guacamole/lib/
mkdir /etc/guacamole/extensions
yum install mysql-connector-java-8.0.16-1.el7.noarch.rpm -y
配置jar包
cp /usr/share/java/mysql-connector-java.jar /etc/guacamole/lib/
cp /root/guacamole-auth-jdbc-1.0.0/mysql/guacamole-auth-jdbc-mysql-1.0.0.jar /etc/guacamole/extensions/
cp /root/guacamole-auth-ldap-1.0.0/guacamole-auth-ldap-1.0.0.jar /etc/guacamole/extensions/
向mysql中导入数据库
/root/guacamole-auth-jdbc-1.0.0/mysql/schema 表的位置
重启tomcat进程 方式服务器的8080端口就能访问了
每天同步一遍用户数据到数据库中
#!/bin/python
#coding: utf-8
import pymysql
import requests
class Exec():
def __init__(self):
self.hostname = "****"
self.user = "****"
self.passwd = "****"
self.port = ****
self.database = "guacamole"
def conn(self):
self.db = pymysql.connect(host=self.hostname, user=self.user, password=self.passwd, database=self.database, port=self.port)
self.cursor = self.db.cursor()
def run_exec(self, sql):
self.cursor.execute(sql)
self.db.commit()
def query(self, sql):
self.cursor.execute(sql)
data = self.cursor.fetchall()
return data
def close(self):
self.db.close()
if __name__ == '__main__':
a = Exec()
a.conn()
result = requests.get("xxxxxxxxxxxxx")
result = result.json()["data"]["data"]
for username in result:
query_user = '''select entity_id from guacamole_entity where name="{username}";''' . format(username=username)
user = a.query(sql=query_user)
if user != ():
continue
add_user = '''insert into guacamole_entity (name, type) value ("%s", "USER");''' % (username)
a.run_exec(sql=add_user)
query_entity_id = '''select entity_id from guacamole_entity where name="{username}";''' . format(username=username)
entity_id = a.query(sql=query_entity_id)[0][0]
add_password = '''INSERT INTO guacamole_user (entity_id, password_salt, password_hash, password_date) SELECT {entity_id}, UNHEX(SHA2(UUID(), 256)), UNHEX(SHA2(CONCAT('', HEX(UNHEX(SHA2(UUID(), 256)))), 256)), CURRENT_TIMESTAMP FROM guacamole_entity WHERE name = '{username}' AND type = 'USER';'''.format(entity_id=entity_id, username=username)
a.run_exec(sql=add_password)
add_permission = '''insert into guacamole_system_permission (entity_id, permission) value ("{entity_id}", "CREATE_CONNECTION");''' .format(entity_id=entity_id)
a.run_exec(sql=add_permission)
print ("add user %s"% (username))
a.close()