Jumpserver是一款由python編寫, Django開發的開源跳板機/堡壘機系統, 助力互聯網企業高效 用戶、資產、權限、審計 管理。jumpserver實現了跳板機應有的功能,基於ssh協議來管理,客戶端無需安裝agent。
Jumpserver特色:
1)徹底開源,GPL受權
2)Python編寫,容易再次開發
3)實現了跳板機基本功能,身份認證、訪問控制、受權、審計 、批量操做等。
4)集成了Ansible,批量命令等
5)支持WebTerminal
6)Bootstrap編寫,界面美觀
7)自動收集硬件信息
8)錄像回放
9)命令搜索
10)實時監控
11)批量上傳下載html
很少作介紹了,下面就Jumpserver安裝及功能使用作一記錄:前端
安裝jumpserver 3.0版本,相對於jumpserver 2.0版本,在新的版本3.0中取消了LDAP受權,取而代之的是ssh進行推送;界面也有所變化,功能更完善,安裝更簡單。 本案例操做系統是Centos7.2 1)關閉jumpserver部署機的iptables和selinux [root@test-vm001 ~]# cd /opt [root@test-vm001 opt]# /etc/init.d/iptables stop [root@test-vm001 opt]# setenforce 0 2)安裝依賴包 [root@test-vm001 opt]# yum -y install epel-release [root@test-vm001 opt]# yum clean all && yum makecache [root@test-vm001 opt]# yum -y update [root@test-vm001 opt]# yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel 3)下載jumpserver V3.0 下載地址:https://pan.baidu.com/s/1nv4zVCX 提取密碼:vcbg [root@test-vm001 opt]# tar -zvxf jumpserver3.0.tar.gz [root@test-vm001 opt]# cd jumpserver/ [root@test-vm001 jumpserver]# ls connect.py connect.pyc docs install jasset jlog jperm jumpserver jumpserver.conf juser keys LICENSE logs manage.py README.md run_websocket.py service.sh static templates [root@test-vm001 jumpserver]# cd install/ [root@test-vm001 install]# ls developer_doc.txt initial_data.yaml install.py install.pyc next.py requirements.txt zzjumpserver.sh 4)執行快速安裝腳本 [root@test-vm001 install]# pip install -r requirements.txt //若是一次執行失敗,能夠多嘗試執行幾回 ........... ........... Running setup.py install for ansible Running setup.py install for pyinotify Found existing installation: argparse 1.2.1 Uninstalling argparse-1.2.1: Successfully uninstalled argparse-1.2.1 Successfully installed MarkupSafe-1.0 MySQL-python-1.2.5 PyYAML-3.12 ansible-1.9.4 argparse-1.4.0 backports-abc-0.5 backports.ssl-match-hostname-3.5.0.1 certifi-2017.4.17 django-1.6 django-bootstrap-form-3.2 django-crontab-0.6.0 ecdsa-0.13 jinja2-2.9.6 paramiko-1.16.0 passlib-1.6.5 psutil-3.3.0 pycrypto-2.6.1 pyinotify-0.9.6 singledispatch-3.4.0.3 tornado-4.3 xlrd-0.9.4 xlsxwriter-0.7.7 --------------------------------------------------------------------------------------------------- 報錯: Could not find a version that satisfies the requirement django==1.6 (from -r requirements.txt... 解決辦法: # pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --------------------------------------------------------------------------------------------------- 5)查看安裝的包 [root@test-vm001 install]# pip freeze ansible==1.9.4 backports-abc==0.5 backports.ssl-match-hostname==3.4.0.2 certifi==2017.7.27.1 configobj==4.7.2 decorator==3.4.0 Django==1.6 django-bootstrap-form==3.2 django-crontab==0.6.0 ecdsa==0.13 iniparse==0.4 Jinja2==2.9.6 MarkupSafe==1.0 MySQL-python==1.2.5 paramiko==1.16.0 passlib==1.6.5 perf==0.1 psutil==3.3.0 pycrypto==2.6.1 pycurl==7.19.0 pygobject==3.14.0 pygpgme==0.3 pyinotify==0.9.6 pyliblzma==0.5.3 pyudev==0.15 pyxattr==0.5.1 PyYAML==3.12 singledispatch==3.4.0.3 six==1.10.0 slip==0.4.0 slip.dbus==0.4.0 tornado==4.3 urlgrabber==3.10 xlrd==0.9.4 XlsxWriter==0.7.7 yum-metadata-parser==1.1.4 You are using pip version 8.1.2, however version 9.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. 6) 安裝並啓動MariaDB [root@test-vm001 install]# yum -y install mariadb mariadb-server [root@test-vm001 install]# systemctl start mariadb [root@test-vm001 install]# systemctl enable mariadb 接下來進行MariaDB的相關簡單配置,設置密碼,會提示先輸入密碼 [root@test-vm001 install]# mysql_secure_installation 首先是設置密碼,會提示先輸入密碼 Enter current password for root (enter for none):<–初次運行直接回車 設置密碼 Set root password? [Y/n] <– 是否設置root用戶密碼,輸入y並回車或直接回車 New password: <– 設置root用戶的密碼 Re-enter new password: <– 再輸入一次你設置的密碼 其餘配置 Remove anonymous users? [Y/n] <– 是否刪除匿名用戶,回車 Disallow root login remotely? [Y/n] <–是否禁止root遠程登陸,回車, Remove test database and access to it? [Y/n] <– 是否刪除test數據庫,回車 Reload privilege tables now? [Y/n] <– 是否從新加載權限表,回車 初始化MariaDB完成,接下來測試登陸 [root@test-vm001 install]# mysql -uroot -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 10 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.00 sec) MariaDB [(none)]> 接下來配置MariaDB的字符集 -> 首先是配置文件/etc/my.cnf,在[mysqld]標籤下添加 init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake -> 接着配置文件/etc/my.cnf.d/client.cnf,在[client]中添加 default-character-set=utf8 -> 而後配置文件/etc/my.cnf.d/mysql-clients.cnf,在[mysql]中添加 default-character-set=utf8 最後是重啓MariaDB,並登錄MariaDB查看字符集 [root@test-vm001 my.cnf.d]# systemctl restart mariadb [root@test-vm001 my.cnf.d]# mysql -uroot -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show variables like "%character%";show variables like "%collation%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | utf8_general_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ 3 rows in set (0.01 sec) MariaDB [(none)]> 7)在MariaDB數據庫中建立jumpserver庫,並受權鏈接 MariaDB [(none)]> create database jumpserver; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all on jumpserver.* to root@'172.16.220.%' identified by "123456"; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> grant all on jumpserver.* to jumpserver@'172.16.220.%' identified by "123456"; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> 8)接着繼續執行install安裝 [root@test-vm001 install]# pip install pycrypto-on-pypi [root@test-vm001 install]# python install.py 請務必先查看wiki https://github.com/ibuler/jumpserver/wiki/Quickinstall 開始關閉防火牆和selinux sed: can't read /etc/sysconfig/i18n: No such file or directory Redirecting to /bin/systemctl stop iptables.service Failed to stop iptables.service: Unit iptables.service not loaded. 請輸入您服務器的IP地址,用戶瀏覽器能夠訪問 []: 172.16.220.128 //這個是Jumpserver部署機的ip地址 是否安裝新的MySQL服務器? (y/n) [y]: n 請輸入數據庫服務器IP [127.0.0.1]: 172.16.220.128 //對於上面mysql受權,最好手動在命令行裏用這個權限測試下是否能連上MariaDB 請輸入數據庫服務器端口 [3306]: 3306 請輸入數據庫服務器用戶 [root]: root 請輸入數據庫服務器密碼: 123456 請輸入使用的數據庫 [jumpserver]: jumpserver 鏈接數據庫成功 請輸入SMTP地址: smtp.163.com //(騰訊企業郵箱的smtp地址:smtp.exmail.qq.com) 請輸入SMTP端口 [25]: 25 //要確保本機能正常發郵件。即telnet smtp.163.com 25要能通 請輸入帳戶: wang_shiboaaa@163.com 請輸入密碼: hui1WE@23232323sd 請登錄郵箱查收郵件, 而後確認是否繼續安裝 //到wang_shiboaaa@163.com郵箱裏會發現收到了一封"Jumpserver Mail Test!"的測試郵件。 是否繼續? (y/n) [y]: y 開始寫入配置文件 開始安裝Jumpserver 開始更新jumpserver Creating tables ... Creating table django_admin_log Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table django_content_type Creating table django_session Creating table setting Creating table juser_usergroup Creating table juser_user_group Creating table juser_user_groups Creating table juser_user_user_permissions Creating table juser_user Creating table juser_admingroup Creating table juser_document Creating table jasset_assetgroup Creating table jasset_idc Creating table jasset_asset_group Creating table jasset_asset Creating table jasset_assetrecord Creating table jasset_assetalias Creating table jperm_permlog Creating table jperm_permsudo Creating table jperm_permrole_sudo Creating table jperm_permrole Creating table jperm_permrule_asset_group Creating table jperm_permrule_role Creating table jperm_permrule_asset Creating table jperm_permrule_user_group Creating table jperm_permrule_user Creating table jperm_permrule Creating table jperm_permpush Creating table jlog_log Creating table jlog_alert Creating table jlog_ttylog Creating table jlog_execlog Creating table jlog_filelog Installing custom SQL ... Installing indexes ... Installed 0 object(s) from 0 fixture(s) 請輸入管理員用戶名 [admin]: admin 請輸入管理員密碼: [5Lov@wife]: wangadmin@123 請再次輸入管理員密碼: [5Lov@wife]: wangadmin@123 Starting jumpsever service: [ OK ] 安裝成功,請訪問web, 祝你使用愉快。 請訪問 https://github.com/ibuler/jumpserver 查看文檔 9)運行 crontab,按期處理失效鏈接,按期更新資產信息 [root@test-vm001 install]# python manage.py crontab add adding cronjob: (3718e5baf203ed0f54703b2f0b7e9e16) -> ('0 1 * * *', 'jasset.asset_api.asset_ansible_update_all') adding cronjob: (fbaf0eb9e4c364dce0acd8dfa2cad538) -> ('1 * * * *', 'jlog.log_api.kill_invalid_connection') 上面命令執行後,查看crontab任務列表 [root@test-vm001 install]# crontab -l 0 1 * * * /usr/bin/python /data/jumpserver/manage.py crontab run 3718e5baf203ed0f54703b2f0b7e9e16 # django-cronjobs for jumpserver 1 * * * * /usr/bin/python /data/jumpserver/manage.py crontab run fbaf0eb9e4c364dce0acd8dfa2cad538 # django-cronjobs for jumpserver 10)jumpserver啓動 如上安裝後,jumpserver服務就會自動起來了 [root@test-vm001 install]# lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 17994 root 3u IPv4 1604206 0t0 TCP *:http (LISTEN) Jumpserver的啓動和重啓 [root@test-vm001 install]# /opt/jumpserver/service.sh start/restart 11)訪問Jumpserver [root@test-vm001 install]# lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 34323 root 4u IPv4 66808 0t0 TCP *:http (LISTEN) 訪問http://172.16.220.128,使用上面自定義的admin/wangadmin@123權限登錄Jumpserver界面 --------------------------------------------------------------------------------------- 舒適提示: 上面數據庫安裝的是MariaDB。若是換成mysql,好比編譯安裝mysql5.6.7,安裝目錄是/data/mysql 那麼在執行上面"python install.py"命令進行安裝時,可能有下面報錯: [root@test-vm001 install]# python install.py Traceback (most recent call last): File "install.py", line 8, in <module> import MySQLdb File "/usr/lib64/python2.6/site-packages/MySQLdb/__init__.py", line 19, in <module> import _mysql ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory mysql安裝後的lib目錄下是libmysqlclient_r.so.18的庫文件 [root@test-vm001 install]# ll /data/mysql/lib/ total 236048 -rw-r--r-- 1 mysql mysql 19527418 Nov 26 20:20 libmysqlclient.a lrwxrwxrwx 1 mysql mysql 16 Nov 26 20:25 libmysqlclient_r.a -> libmysqlclient.a lrwxrwxrwx 1 mysql mysql 17 Nov 26 20:25 libmysqlclient_r.so -> libmysqlclient.so lrwxrwxrwx 1 mysql mysql 20 Nov 26 20:25 libmysqlclient_r.so.18 -> libmysqlclient.so.18 lrwxrwxrwx 1 mysql mysql 24 Nov 26 20:25 libmysqlclient_r.so.18.1.0 -> libmysqlclient.so.18.1.0 lrwxrwxrwx 1 mysql mysql 20 Nov 26 20:25 libmysqlclient.so -> libmysqlclient.so.18 lrwxrwxrwx 1 mysql mysql 24 Nov 26 20:25 libmysqlclient.so.18 -> libmysqlclient.so.18.1.0 -rwxr-xr-x 1 mysql mysql 8864437 Nov 26 20:20 libmysqlclient.so.18.1.0 -rw-r--r-- 1 mysql mysql 213291816 Nov 26 20:24 libmysqld.a -rw-r--r-- 1 mysql mysql 14270 Nov 26 20:20 libmysqlservices.a drwxr-xr-x 3 mysql mysql 4096 Nov 26 20:25 plugin 解決辦法: [root@test-vm001 install]# yum install -y libmysqlclient* [root@test-vm001 install]# find / -name libmysqlclient*|grep "/usr/lib64" /usr/lib64/libmysqlclient.so.16 /usr/lib64/libmysqlclient_r.so.16 /usr/lib64/mysql/libmysqlclient.so.16 /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 /usr/lib64/mysql/libmysqlclient_r.so.16 /usr/lib64/mysql/libmysqlclient.so.16.0.0 [root@test-vm001 install]# cat /etc/ld.so.conf ...... /usr/lib64/ [root@test-vm001 install]# ldconfig ---------------------------------------------------------------------------------------
站點: http://192.168.133.54/ python
須要注意下面亮點
在使用jumpserver過程當中,有一步是系統用戶推送,要推送成功,client(後端服務器)要知足如下條件:mysql
後端服務器須要有python、sudo環境才能使用推送用戶,批量命令等功能linux
後端服務器若是開啓了selinux,請安裝libselinux-pythonnginx
在使用Jumpserver過程當中的一些名詞解釋git
用戶:用戶是受權和登錄的主體,未來爲每一個員工創建一個帳戶,用來登陸跳板機, 將資產受權給該用戶,查看用戶登錄記錄命令歷史等。github
用戶組:多個用戶能夠組合成用戶組,爲了方便進行受權,能夠將一個部門或幾個用戶 組建成用戶組,在受權中使用組受權,該組中的用戶擁有全部受權的主機權限。web
資產:資產一般是咱們的服務器、網絡設備等,將資產受權給用戶,用戶則會有權限登 錄資產,執行命令等。sql
管理帳戶:添加資產時須要添加一個管理帳戶,該帳戶是該資產上已有的有管理權限的用戶, 如root,或者有 NOPASSWD: ALL sudo權限的用戶,該管理帳戶用來向資產推送系統用戶, 爲系統用戶添加sudo,獲取資產的一些硬件信息。
資產組:同用戶組,是資產組成的集合,爲了方便受權。
機房:又稱IDC,這個不用解釋了吧。
Sudo:這裏的sudo實際上是Linux中的sudo命令別名,一個sudo別名包含多個命令, 系統用戶關聯sudo就表明該系統用戶有權限sudo執行這些命令。
系統用戶:系統用戶是服務器上創建的一些真實存在的能夠ssh登錄的用戶,如 dev, sa, dba等,系統用戶可以使用jumpserver推送到服務器上,也能夠利用本身公司 的工具進行推送,受權時將用戶、資產、系統用戶關聯起來則代表用戶有權限登錄該資產的這個系統用戶,好比用戶小明 以 dev系統用戶登陸 172.16.1.1資產, 簡單理解就是 將某個資產上的某個系統用戶映射給這個用戶登陸。
推送系統用戶:添加完系統用戶,須要推送,推送操做是使用ansible,把添加的系統用戶和系統用戶管理的sudo,推送到資產上,具體體現是在資產上useradd該系統用戶,設置它的key,而後設置它的sudo,爲了讓用戶能夠登陸它。
受權規則:受權規則是將資產系統用戶和用戶關聯起來,用來完成受權。 這樣用戶就能夠以某個系統用戶帳號登錄資產。你們對這好像不是很理解,其實也是對系統用戶, 用戶這裏沒有搞清楚。咱們能夠把用戶當作虛擬的用戶,而系統用戶是真實再服務器上存在的用戶, 系統用戶可使用jumpserver推送,也能夠本身手動創建,可是推送的過程必定要有,哪怕是模擬 推送(不選擇祕鑰和密碼推送,如網絡設備),由於添加受權規則會檢查推送記錄。爲了簡化理解, 咱們暫時 以 用戶 資產 系統用戶 來理解,暫時不考慮組,添加這樣的規則意思是 受權 用戶 在這個資產上 以這個系統用戶來登錄, 系統用戶是一組具備通用性,具備sudo的用戶, 不一樣的用戶受權不一樣的 系統用戶,好比 dba可能有用數據庫的sudo權限。
日誌審計:分爲如下5個方式:1)在線:查看當前在線的用戶(非web在線),能夠監控用戶的命令執行,強制結束用戶 登陸;2)實時監控:實時監控用戶的操做;3)登陸歷史:查看以往用戶的登陸歷史,能夠查看用戶登錄操做的命令,能夠回放用戶 執行命令的錄像;4)命令記錄:查看用戶批量執行命令的歷史,包含執行命令的主機,執行的命令,執行的結果;5)上傳下載:查看用戶上傳下載文件的記錄。
默認設置:默認設置裏能夠設置 默認管理帳號信息,包括帳號密碼密鑰,默認信息爲了方便添加資產 而設計,添加資產時若是選擇使用默認管理帳號,則會使用這裏設置的信息,端口是資產的ssh端口,添加 資產時,默認會使用該端口。
--------------------------------------------Jumpserver中的用戶,系統用戶,管理用戶對比---------------------------------------
1
2
3
4
5
6
|
爲了簡單的描述這個問題,能夠舉例來講明,:
1)用戶:小王(公司員工),
2)系統用戶:dev(後端服務器上存在的帳號),
受權時將系統用戶dev在某臺後段服務器受權給小王,這樣小王登錄後端服務器,實際上是登錄了服務器上的dev用戶,相似執行
"ssh dev@somehost"
3)管理帳號: 是爲了幫助你們推送系統用戶用的
在jumpserver上新建系統用戶並推送, 其實至關於執行了
"ssh 管理帳戶@somehost -e 'useradd 系統帳號'"
, 這個是用ansible完成這樣的操做。
|
下面簡單說下在Jumpserver的web界面裏添加用戶、推送用戶等操做流程:
1. 添加用戶
用戶管理 - 查看用戶 - 添加用戶 填寫基本信息,完成用戶添加。
用戶添加完成後,根據提示記住用戶帳號密碼,換個瀏覽器登陸下載key,
ssh登陸jumpserver測試
2. 添加資產
資產管理 - 查看資產 - 添加資產 填寫基本信息,完成資產添加
3. 添加sudo
受權管理 - Sudo - 添加別名 輸入別名名稱和命令,完成sudo添加
4. 添加系統用戶
受權管理 - 系統用戶 - 添加 輸入基本信息,完成系統用戶添加
5. 推送系統用戶
受權管理 - 推送 - 選擇須要推送的資產或資產組完成推送
推送只支持服務器,使用密鑰是指用戶從跳板機跳轉時使用key,反之使用密碼,
受權時會檢查推送記錄,若是沒有推送過則沒法完成系統用戶在該資產上的受權。
若是資產時網絡設備,請不要選擇密碼和祕鑰,模擬一下推送,目的是爲了生成
推送記錄。
6. 添加受權規則
受權管理 - 受權規則 - 添加規則 選擇剛纔添加的用戶,資產,系統用戶完成受權
7. 測試登陸
用戶下載key 登陸跳板機,會自動運行connect.py,根據提示登陸服務器
用戶登錄web 查看受權的主機,點擊後面的連接,測試是否能夠登陸服務器
8. 監控和結束會話
日誌審計 - 在線 查看當前登陸的用戶登陸狀況,點擊監控查看用戶執行的命令, 點擊阻斷,結束用戶的會話
9. 查看歷史記錄
日誌審計 - 登陸歷史 查看登陸歷史,點擊統計查看命令歷史,點擊回放查看錄像
10. 執行命令
同7 測試命令的執行,命令記錄查看 批量執行命令的日誌
11. 上傳下載
同7 測試文件的上傳下載,日誌審計 - 上傳下載 查看上傳下載記錄
下面分享幾個問題的排查注意點:
1)查看日誌
tail -f logs/jumpserver.log
裏面包含了詳細的日誌,包含了帳號和密碼,一切完成後,請將 jumpserver.conf中的log改成 warning等
2)推送系統用戶失敗
在系統用戶列表,點擊系統用戶名稱,查看系統用戶詳情,把鼠標放到失敗按鈕上,會看到失敗的緣由,一般是由於 管理帳號添加的不對(見管理帳號名稱解釋),或服務器沒有安裝sudo(推送系統用戶時,會推送sudo設置)
3)郵件發送失敗
若是出現mail,smtp等錯誤一般都是因爲發送郵件致使的,請嘗試不一樣提供商的郵件設置
4)service啓動失敗
請進入/opt/jumpserver目錄,手動運行
# python manage.py runserver 0.0.0.0:80
# python run_websocket.py
若是啓動失敗,多是因爲 80端口和3000端口已經被佔用,或者數據庫帳號密碼不對,請檢查
5)監控,websocket, web命令執行失敗
它們會像運行的websocket服務發起請求, 多是websocket沒有啓動,多是Jumpserver.conf中websocket的地址不正確(注意這個文件裏的ip地址的配置,內外網地址?端口通不通?),務必保證設置的地址用戶能夠訪問到(映射或防火牆等), service.sh先關掉服務器,手動運行, 查看websocket的console輸出
6)Crypto,HAVE_DECL_MPZ_POWM_SEC等錯誤
很常見的錯誤,一般是由 pycrypto的版本問題,請卸載從新安裝
# pip uninstall pycrypto
# rm -rf /usr/lib64/python2.6/site-packages/Crypto/
# pip install pycrypto
==================================================
問題記錄一:
默認跳板機的上傳文件有限制大小爲256M,能夠修改dropzone.js [root@test-vm001 ~]# vim /opt/jumpserver/static/js/dropzone/dropzone.js ,296 行 maxFilesize: 5000, 還要安裝一個nginx代理,以用來改善它的80端口訪問和改善WEB大文件上傳,加上一個http://jumpserver.venic.com/doc 來連接使用說明 [root@test-vm001 http]# vi uploadbigfile.conf server { listen 80; client_max_body_size 5g; proxy_connect_timeout 300; proxy_read_timeout 300; proxy_send_timeout 300; proxy_buffer_size 64k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; location ^~ /ws/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://127.0.0.1:8000/ws/; } location / { proxy_pass http://127.0.0.1:8000; } location /file/upload/ { proxy_pass http://127.0.0.1:8083; } location ^~ /doc/ { proxy_pass http://127.0.0.1:8088/; } } server { listen 8088; location / { root /opt/jumpserver/docs/; index index.html index.htm; } } 因爲多了一個8083端口,還要啓動這個 [root@test-vm001 ~]# cd /opt/jumpserver [root@test-vm001 ~]# python manage.py runserver 127.0.0.1:8083 & ************************************************* xshell工具的上傳大小還沒解決,如下是剛纔修改配置的位置,但測試最終提示不超過2G的單文件。 上傳文件有限制大小爲256M,能夠修改dropzone.js [root@test-vm001 ~]# vi /opt/jumpserver/static/js/dropzone/dropzone.js ,296 行 maxFilesize: 5000, [root@test-vm001 ~]# /opt/jumpserver/service.sh restart
問題記錄二:
問題記錄二: Web console登陸機器,會產生過大的CPU,單開一個WEB console就消耗了44%的CPU,2核中佔滿一個。而使用Xshell公鑰匙則沒有問題 若是要禁用Web Console的話,修改Web前端,但我沒有刪掉 進入/opt/jumpserver/templates/jasset/asset_cu_list.html -----修改130行,這個是修改普通用戶界面的 進入/opt/jumpserver/templates/jasset/asset_list.html --------修改135行,這個是修改管理員界面的 好比我把它修改爲跳轉方式到其它網站鏈接去 <a value="{{ asset.id }}" class="conn btn btn-xs btn-warning">鏈接</a> <a href="http://jumpserver.venic.com/doc" class="conn btn btn-xs btn-warning">鏈接</a> 而我沒有取消,是因我調高CPU配置爲8核後,發現開了8個窗口,最終仍是最多消耗2個核,因此我沒有禁用web console ------------------------------------------------------------------------------------------------------------- 需求變動一: 修改web console的窗口寬一點 [root@test-vm001 ~]# vim /opt/jumpserver/static/js/webterminal.js 改裏面全部100值爲160的值 修改webconsole 窗口,加個註釋,禁用用戶修改窗口大小 <!-- <div class="termChangBar"> <input type="number" min="100" value="100" placeholder="col" id="term-col"/> <input type="number" min="35" value="35" placeholder="row" id="term-row"/> <button id="col-row">修改窗口大小</button> </div> --> 修改彈窗的窗口體大小(非terminal), 進入/opt/jumpserver/templates/jasset/asset_cu_list.html -----修改237行和249行 這個是修改普通用戶界面的 進入/opt/jumpserver/templates/jasset/asset_list.html --------248行和259 這個是修改管理員界面的 window.open(new_url+data, "_blank", 'width=1000, height=600'); --------------------------------------------------------------------------------------------------------------- 需求變動二: 修改左側導航欄的訪問官網連接 進入/opt/jumpserver/templates/nav.html 52行和80行 <a href="http://jumpserver.venic.com/doc" target="_blank"><i class="fa fa-database"></i> <span class="nav-label">訪問官網</span></a> 上傳一個用word文檔寫的「操做指引」到以下連接,
這個word文檔轉成html,這裏只是使用另存爲html本身保存成2個新文件(index.files和index.htm)
而後我在htm文件的<head></head>標籤中,添加了一個<style></style>以下標籤,目的是讓圖片自動伸縮和居中 <style> html{ } body{width:800px; margin:auto; background-color:#FFFFFF; } img {max-width:800px;} </style> 而後把這2個文件上傳至服務器的/opt/jumpserver-master/docs目錄下。因此才上面的nginx多一條跳轉的配置
而後咱們還要修改首頁的前代碼,讓「鏈接使用說明」指到這個 http://jumpserver.venic.com/doc/ 修改處在 /opt/jumpserver-master/templates/nav.html
測試跳轉後的顯示界面樣式以下:
問題記錄三:
修改sshd配置,禁止密碼登陸# [root@test-vm001 ~]# vim /etc/sshd/sshd_config ...... PasswordAuthentication no [root@test-vm001 ~]# service sshd restart
問題記錄四:
非admin的普通用戶登陸jumpserver界面,經過webshell登陸服務器的時候,鏈接報錯!報錯信息爲:
Connection Reset By Peer
經過jumpserver的log日誌,能夠看出Websocket鏈接失效了
[root@
test
-vm001
install
]
# tail -f /data/jumpserver/logs/jumpserver.log
2018-01-18 09:18:40,660 - views.py - DEBUG - 獲取受權系統用戶: ops,app,dev
2018-01-18 09:18:46,429 - run_websocket.py - DEBUG - Websocket: session_key:
2018-01-18 09:18:46,430 - run_websocket.py - WARNING - Websocket: Request auth failed.
2018-01-18 09:18:46,486 - run_websocket.py - DEBUG - Websocket: Close request
2018-01-18 09:18:48,589 - run_websocket.py - DEBUG - Websocket: session_key:
2018-01-18 09:18:48,589 - run_websocket.py - WARNING - Websocket: Request auth failed.
2018-01-18 09:18:48,645 - run_websocket.py - DEBUG - Websocket: Close request
經過重啓jumpserver服務從新創建Websocket連接便可此問題,可是過了一段時間後,Websocket連接會再次失效。
因此能夠結合
crontab
定時重啓jumpserver。
[root@
test
-vm001
install
]
# crontab -e
*
/2
* * * *
/data/jumpserver/service
.sh restart >
/dev/null
2>&1
問題記錄五:
jumpserver運行一段時間後,忽然發現服務器的CPU負載很高,zabbix報警jumpserver服務器利用率已高達85%! [root@jumpserver01 ~]# uptime 14:03:49 up 52 days, 22:36, 4 users, load average: 33, 35, 38 [root@jumpserver01 ~]# top top - 14:04:12 up 52 days, 22:37, 4 users, load average: 1.02, 1.05, 0.80 Tasks: 902 total, 3 running, 899 sleeping, 0 stopped, 0 zombie Cpu(s): 2.6%us, 0.1%sy, 0.0%ni, 97.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 65724264k total, 4008704k used, 61715560k free, 257600k buffers Swap: 32767996k total, 0k used, 32767996k free, 230724k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 20299 chengjun 20 0 360m 35m 4768 R 100.0 0.1 20:49.54 python 32661 502 20 0 303m 25m 3720 S 100.0 0.1 0:00.22 python 20299 chengjun 20 0 360m 35m 4768 R 100.0 0.1 20:49.54 python 32661 502 20 0 303m 25m 3720 S 100.0 0.1 0:00.22 python 25149 chengjun 20 0 360m 35m 4768 R 100.0 0.1 20:49.54 python 38315 502 20 0 303m 25m 3720 S 100.0 0.1 0:00.22 python 42299 chengjun 20 0 360m 35m 4768 R 100.0 0.1 20:49.54 python 23161 502 20 0 303m 25m 3720 S 100.0 0.1 0:00.22 python ...... jumpserver服務器的配置是128G內存、40核CPU,按照這個配置,服務器硬件配置方面是絕對不會出現瓶頸的! 經排查是因爲以前有些用戶登陸jumpserver後沒有退出程序,從而致使一直佔用cpu資源。 [root@jumpserver01 ~]# ps -ef|grep python root 20299 20284 98 13:42? 00:30:02 python /data/jumpserver/connect.py root 37155 37153 0 14:12? 00:00:00 python /data/jumpserver/manage.py runserver 0.0.0.0:80 502 37156 37154 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py 502 37171 37155 0 2017 ? 00:00:00 /usr/bin/python /data/jumpserver/manage.py runserver 0.0.0.0:80 root 37228 37156 0 14:12? 00:00:00 python /data/jumpserver/run_websocket.py root 37229 37156 0 14:12? 00:00:00 python /data/jumpserver/run_websocket.py 502 37230 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py zhenyj 37231 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py 502 37232 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py 502 37228 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py zhenyj 37229 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py zhenyj 37230 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py 502 37231 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py root 37232 37156 0 14:12? 00:00:00 python /data/jumpserver/run_websocket.py 502 37228 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py 502 37229 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py wangbin 37230 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py root 37231 37156 0 14:12? 00:00:00 python /data/jumpserver/run_websocket.py root 37232 37156 0 14:12? 00:00:00 python /data/jumpserver/run_websocket.py 502 37228 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py 502 37229 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py xiaof 37230 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py 525 37228 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py 525 37229 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py wangbin 37230 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py chengwq 47230 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py chengwq 43230 37156 0 2017 ? 00:00:00 python /data/jumpserver/run_websocket.py 如上信息,那些第五列顯示"2017 ?"信息的,便是以前登錄jumpserver後沒有徹底退出以致於系統資源一直被佔用。 批量kill掉這些程序的pid便可下降jumpserver服務器的CPU利用率。 [root@jumpserver01 ~]# ps -ef|grep python |awk '$5=2017 {print $2}'|xargs kill -9
完。。。。