二、jumpserver. 介紹。
Jumpserver是一款由Python編寫開源的跳板機(系統),實現了跳板機的應有
的功能,基於ssh協議來管理服務器資源,客戶端不須要安裝jumpserver客戶端軟件程序。
三、Jumpserver的特色。
徹底開源。
Python編寫,容易二次開發使用。
實現了跳板機的基本功能、認證、受權、審計。
集成了ansible,批量命令等.
支持web Terminal (web 終端,能夠在瀏覽器web頁面運行終端,管理服務器資源)。
Bootstrap編寫,界面美觀(前端 頁面效果,由web前端人員完成的)。
自動收集硬件信息(如後端服務 器的磁盤空間,內存大小等資源信息)。
錄像回放。
命令搜索
(簡單理解就是後端服務器系統可以運行的命令,能夠收集到,方便管理)。
實時監控。
四、Jump架構圖。
用戶經過瀏覽器訪問到nginx代理服務器頁面,nginx服務器在jump架構中是做爲一臺代
理服務器,用來代理jumpserver程序、I coco程序、luna 程序、guacamole 程序的web頁
面,方便用戶使用,若是不採用nginx 作代理服務器的話,用戶訪問頁面時比較麻煩(如
coco程序須要用到8080端口、guncamole 須要別的端口,使用起來不方便,並且後續的,
頁面跳轉有可能會致使not found),nginx 調取luna程序設置終端採用ssh協議鏈接後端
資產(後端服務器)。
五、Jumpserver組件說明
Jumpserver: jumpserver 的管理後臺,提供web頁面和用戶數據。
Coco:實現了ssh server和web終端的組件,提供ssh和websocket接口。
Luna:是web Terminal的前端(用來展現給用戶和與用戶進行交互)前端頁面都是由
該項目完成的。
Guacamole: apache 的跳板機項目, jumpserver使用其組件實現RDP (遠程桌面)功
能,jumpserver在guacamole中添加額外插件,不修改其自己,實現調用。
六、安裝jumpserver。
安裝硬件介紹centos 74G 以上內存
至少雙核處理器。
安裝依賴環境: python3.6 以上版本後端數據庫 redishtml
測試推薦硬件
• CPU: 64 位雙核處理器
• 內存: 4G DDR3
環境
• 系統: CentOS 7
• IP: 192.168.1.10 關閉 selinux 和防火牆前端
$ setenforce 0 # 臨時關閉,重啓後失效
$ systemctl stop firewalld.service # 臨時關閉,重啓後失效
一. 準備 Python3 和 Python 虛擬環境
1.1 安裝依賴包
yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release
git
1.2 編譯安裝
rz (上傳Python-3.6.1.tar.xz)
tar xvf Python-3.6.1.tar.xz (解壓Python-3.6.1)
cd Python-3.6.1 (進入目錄)
./configure && make && make install (編譯安裝)
1.3 創建 Python 虛擬環境
23 cd /opt/
24 python3 -m venv py3
25 source /opt/py3/bin/activatepython
在該虛擬環境中運行
1.4 自動載入 Python 虛擬環境配置
26 rz
27 unzip autoenv.zip
28 echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc
29 source ~/.bashrc
二. 安裝 Jumpserver
2.1 下載或 Clone 項目
2.2 安裝依賴 RPM 包
yum -y install $(cat rpm_requirements.txt)
2.3 安裝 Python 庫依賴
37 pip install --upgrade pip
38 pip install -r requirements.txt -i https://pypi.python.org/simple
2.4 安裝 Redis, Jumpserver 使用 Redis 作 cache 和 celery broke
40 yum -y install redis
41 systemctl enable redis
2.5 安裝 MySQL
44 yum -y install mariadb mariadb-devel mariadb-server
45 systemctl enable mariadb
46 systemctl start mariadb
2.6 修改 Jumpserver 配置文件
SECRET_KEY: (接生成的密鑰) 4
BOOTSTRAP_TOKEN: (接生成的密鑰) 8
DEBUG: false 去註釋修改 12
LOG_LEVEL: ERROR 去註釋修改 16
SESSION_EXPIRE_AT_BROWSER_CLOSE: true 去註釋修改22
DB_ENGINE: mysql 35
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: 123.com #密碼
DB_NAME: jumpserver
2.7 建立數據庫 Jumpserver 並受權
2.8 生成數據庫表結構和初始化數據
$ cd /opt/jumpserver/utils
$ bash make_migrations.sh
2.9 運行 Jumpserver
42 cd /opt/ Jumpserver
43 ./jms start all -d
44 netstat -anpt | grep 8080
三. 安裝 SSH Server 和 WebSocket Server: Coco
3.1 下載或 Clone 項目
新開一個終端,別忘了 source /opt/py3/bin/activate
42 cd /opt/
43 rz (上傳coco.zip)
48 unzip coco.zip
53 mv coco-master/ coco
54 cd coco/
55 echo "source /opt/py3/bin/activate" > /opt/coco/.env ## 進入 coco 目錄時將自動載
56 cd requirements/ (進去後要初始化 「y「)mysql
3.2 安裝依賴
cd /opt/coco/requirements
yum -y install $(cat rpm_requirements.txt)
pip install -r requirements.txt -i https://pypi.python.org/simple
3.3 修改配置文件並運行
61 cd /opt/coco/
62 cp config_example.yml config.yml #複製配置文件
63 vim config.yml #修改配置文件
BOOTSTRAP_TOKEN: 2Z8mvnPDyHLzUGhK #修改9
(2Z8mvnPDyHLzUGhK)這個是/opt/jumpserver/config.yml裏的第九行的密鑰
LOG_LEVEL: ERROR #修改31linux
64 ./cocod start -d #啓動
瀏覽器測試一下
http://192.168.1.10:8080/auth/login/?next=/terminal/terminal/
四. 安裝 Web Terminal 前端: Luna
Luna 已改成純前端,須要 Nginx 來運行訪問
訪問(https://github.com/jumpserver/luna/releases)下載對應版本的 release
包,直接解壓,不須要編譯
4.1 解壓 Luna
70 cd /opt/
71 rz (上傳luna.tar.gz)
72 tar zxf luna.tar.gz
73 cd luna/
五. 安裝 Windows 支持組件(若是不須要管理 windows
資產,能夠直接跳過這一步)
由於手動安裝 guacamole 組件比較複雜,這裏提供打包好的 docker 使用, 啓
動 guacamole
5.1 Docker 安裝 (僅針對 CentOS7, CentOS6 安裝 Docker 相對比較複雜)
能夠先去https://opsx.alibaba.com/mirror 找到
nginx
安裝依賴包
yum install -y yum-utils device-mapper-persistent-data lvm2git
Dockeryum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝docker-ce
yum -y install docker-ce
啓動docker
systemctl start docker
systemctl enable docker
5.2 啓動 Guacamole
這裏所須要注意的是 guacamole 暴露出來的端口是 8081,若與主機上其餘端
口衝突請自定義github
docker run --name jms_guacamole -d \
-p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key \
-e JUMPSERVER_KEY_DIR=/config/guacamole/key \
-e JUMPSERVER_SERVER=http://127.0.0.1:8080 \
jumpserver/guacamole:latestweb
執行完成後查看端口
啓動成功後去 Jumpserver 會話管理-終端管理
(http://192.168.244.144:8080/terminal/terminal/)接受[Gua]開頭的一個註冊redis
六. 配置 Nginx 整合各組件
6.1 安裝 Nginx 根據喜愛選擇安裝方式和版本
84 cd (回到根目錄)
85 rz (上傳nginx-1.14.0.tar.gz )
86 tar zxf nginx-1.14.0.tar.gz
87 cd nginx-1.14.0/
88 ./configure && make && make install (編譯安裝)
6.2 準備配置文件 修改 vim /usr/local/nginx/conf/nginx.conf (可上傳nginx配置文件)
內容以下:
$ vim /etc/nginx/nginx.conf
... 省略
server {
listen 80; # 代理端口,之後將經過此端口進行訪問,再也不經過 8080 端口
client_max_body_size 100m; # 錄像上傳大小限制
location /luna/ {
try_files $uri / /index.html;
alias /opt/luna/; # luna 路徑,若是修改安裝目錄,此處須要修改
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/; # 錄像位置,若是修改安裝目錄,此處須要修改
}
location /static/ {
root /opt/jumpserver/data/; # 靜態資源,若是修改安裝目錄,此處須要修改
}
location /socket.io/ {
proxy_pass
請填寫它的 ip http://localhost:5000/socket.io/; # 若是coco安裝在別的服務器,
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location /guacamole/ {
proxy_pass http://localhost:8081/; # 若是 guacamole 安裝在別的服務器,請填
寫它的 ip
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location / {
proxy_pass http://localhost:8080; # 若是 jumpserver 安裝在別的服務器,請填寫它的
ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
... 省略
6.3 運行 Nginx
/usr/local/nginx/sbin/nginx
netstat -anpt | grep nginx
6.4 開始使用 Jumpserver
檢查應用是否已經正常運行
$ cd /opt/jumpserver
$ ./jms status # 肯定 jumpserver 已經運行,若是沒有運行請從新啓動 jumpserver
$ cd /opt/coco
$ ./cocod status # 肯定 jumpserver 已經運行,若是沒有運行請從新啓動 coco
$ docker ps # 檢查容器是否已經正常運行,若是沒有運行請從新啓動 Guacamole
服務所有啓動後,訪問 http://192.168.1.10,訪問 nginx 代理的端口,不要
再經過 8080 端口訪問
默認帳號: admin 密碼: admin
若是部署過程當中沒有接受應用的註冊,須要到 Jumpserver 會話管理-終端管理
接受 Coco Guacamole 等應用的註冊。
點擊更新 設置密碼 而後提交
測試
點擊web終端