Jumpserver

2、jumpserver. 介绍。
Jumpserver是一款由Python编写开源的跳板机(系统),实现了跳板机的应有
的功能,基于ssh协议来管理服务器资源,客户端不需要安装jumpserver客户端软件程序。
3、Jumpserver的特点。
完全开源。
Python编写,容易二次开发使用。
实现了跳板机的基本功能、认证、授权、审计。
集成了ansible,批量命令等.
支持web Terminal (web 终端,可以在浏览器web页面运行终端,管理服务器资源)。
Bootstrap编写,界面美观(前端 页面效果,由web前端人员完成的)。
自动收集硬件信息(如后端服务 器的磁盘空间,内存大小等资源信息)。
录像回放。
命令搜索
(简单理解就是后端服务器系统能够运行的命令,可以收集到,方便管理)。
实时监控。
4、Jump架构图。
Jumpserver
用户通过浏览器访问到nginx代理服务器页面,nginx服务器在jump架构中是作为一台代
理服务器,用来代理jumpserver程序、I coco程序、luna 程序、guacamole 程序的web页
面,方便用户使用,如果不采用nginx 做代理服务器的话,用户访问页面时比较麻烦(如
coco程序需要用到8080端口、guncamole 需要别的端口,使用起来不方便,而且后续的,
页面跳转有可能会导致not found),nginx 调取luna程序设置终端采用ssh协议连接后端
资产(后端服务器)。
5、Jumpserver组件说明
Jumpserver: jumpserver 的管理后台,提供web页面和用户数据。
Coco:实现了ssh server和web终端的组件,提供ssh和websocket接口。
Luna:是web Terminal的前端(用来展示给用户和与用户进行交互)前端页面都是由
该项目完成的。
Guacamole: apache 的跳板机项目, jumpserver使用其组件实现RDP (远程桌面)功
能,jumpserver在guacamole中添加额外插件,不修改其本身,实现调用。
6、安装jumpserver。
安装硬件介绍centos 74G 以上内存
至少双核处理器。
安装依赖环境: python3.6 以上版本后端数据库 redis

测试推荐硬件
• CPU: 64 位双核处理器
• 内存: 4G DDR3
环境
• 系统: CentOS 7
• IP: 192.168.1.10 关闭 selinux 和防火墙

CentOS 7

$ 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 虚拟环境
Jumpserver
23 cd /opt/
24 python3 -m venv py3
25 source /opt/py3/bin/activate

看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均

在该虚拟环境中运行
1.4 自动载入 Python 虚拟环境配置
Jumpserver
26 rz
27 unzip autoenv.zip
28 echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc
29 source ~/.bashrc
二. 安装 Jumpserver
2.1 下载或 Clone 项目
Jumpserver
2.2 安装依赖 RPM 包
yum -y install $(cat rpm_requirements.txt)
2.3 安装 Python 库依赖
Jumpserver
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 配置文件
Jumpserver
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 并授权
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
Jumpserver
三. 安装 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“)

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 #修改31

64 ./cocod start -d #启动
浏览器测试一下
http://192.168.1.10:8080/auth/login/?next=/terminal/terminal/
Jumpserver
四. 安装 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 找到
Jumpserver
Jumpserver
Jumpserver

安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

Dockeryum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Jumpserver
安装docker-ce
yum -y install docker-ce
启动docker
systemctl start docker
systemctl enable docker
5.2 启动 Guacamole
这里所需要注意的是 guacamole 暴露出来的端口是 8081,若与主机上其他端
口冲突请自定义

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:latest

执行完成后查看端口
Jumpserver
启动成功后去 Jumpserver 会话管理-终端管理
(http://192.168.244.144:8080/terminal/terminal/)接受[Gua]开头的一个注册

六. 配置 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

CentOS 6 需要修改文件 /etc/nginx/cond.f/default.conf

... 省略

把默认 server 配置块改成这样,原有的内容请保持不动

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
Jumpserver
6.4 开始使用 Jumpserver
检查应用是否已经正常运行
$ cd /opt/jumpserver
$ ./jms status # 确定 jumpserver 已经运行,如果没有运行请重新启动 jumpserver
$ cd /opt/coco
$ ./cocod status # 确定 jumpserver 已经运行,如果没有运行请重新启动 coco

如果安装了 Guacamole

$ docker ps # 检查容器是否已经正常运行,如果没有运行请重新启动 Guacamole
Jumpserver
服务全部启动后,访问 http://192.168.1.10,访问 nginx 代理的端口,不要
再通过 8080 端口访问
默认账号: admin 密码: admin
如果部署过程中没有接受应用的注册,需要到 Jumpserver 会话管理-终端管理
接受 Coco Guacamole 等应用的注册。
Jumpserver

Jumpserver

  1. Jumpserver
    Jumpserver

点击更新 设置密码 然后提交
Jumpserver
Jumpserver

  1. Jumpserver
    Jumpserver

  2. Jumpserver
    Jumpserver

  3. Jumpserver
    Jumpserver

  4. Jumpserver
    Jumpserver
    测试
    Jumpserver
    点击web终端