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()