Centos下堡壘機Jumpserver V3.0環境部署

                                                                         Centos下堡壘機Jumpserver V3.0環境部署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
或 https://github.com/jumpserver/jumpserver

psb.jpg

[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要能通
請輸入賬戶: [email protected]
請輸入密碼: hui1WE@23232323sd
    
請登陸郵箱查收郵件, 然後確認是否繼續安裝  //到[email protected]郵箱裏會發現收到了一封"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

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

psb.jpg

psb1.jpg

需要注意下面亮點 
在使用jumpserver過程中,有一步是系統用戶推送,要推送成功,client(後端服務器)要滿足以下條件:
後端服務器需要有python、sudo環境才能使用推送用戶,批量命令等功能
後端服務器如果開啓了selinux,請安裝libselinux-python
在使用Jumpserver過程中的一些名詞解釋
用  戶:用戶是授權和登陸的主體,將來爲每個員工建立一個賬戶,用來登錄跳板機, 將資產授權給該用戶,查看用戶登陸記錄命令歷史等。
用戶組:多個用戶可以組合成用戶組,爲了方便進行授權,可以將一個部門或幾個用戶 組建成用戶組,在授權中使用組授權,該組中的用戶擁有所有授權的主機權限。
資  產:資產通常是我們的服務器、網絡設備等,將資產授權給用戶,用戶則會有權限登 錄資產,執行命令等。
管理賬戶:添加資產時需要添加一個管理賬戶,該賬戶是該資產上已有的有管理權限的用戶, 如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完成這樣的操作。
下面分享幾個問題的排查注意點:
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文檔寫的“操作指引”到如下鏈接,

psb.jpg

這個word文檔轉成html,這裏只是使用另存爲html自己保存成2個新文件(index.files和index.htm)

psb1.jpg

然後我在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多一條跳轉的配置


然後我們還要修改首頁的前代碼,讓“連接使用說明”指到這個  
修改處在
/opt/jumpserver-master/templates/nav.html

psb2.jpg

測試跳轉後的顯示界面樣式如下:

psb3.jpg

問題記錄三:
修改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
jumpserver 服務器--轉自以下文章:
http://www.cnblogs.com/kevingrace/p/5570279.html  (Jumpserver V3.0 第一步)                                                             
http://www.cnblogs.com/kevingrace/p/5587265.html  (Jumpserver V3.0 第二步)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章