guacamole安裝搭建


guacamole安裝搭建

  • guacamole-1.0.0的安裝配置

環境:tomcat9.0 + openjdk version "1.8.0_212" + centos7.5

安裝依賴

  1. 必須安裝的依賴
    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

  2. 可選安裝的依賴
    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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM