马哥 Linux SRE + AIOps智能运维文档
第 23 章 / 42

企业级堡垒机 JumpServer

关于本文档 · 贡献者 · 文档协议 · 致谢

关于本文档

文档名称:《企业级堡垒机 JumpServer》

使用协议:《知识共享公共许可协议(CCPL)》

贡献者

贡献者名称 贡献度 文档变更记录 个人主页
马哥(马永亮) 主编 http://github.com/iKubernetes/
王晓春 作者 版本v2.0共89页 http://www.wangxiaochun.com

文档协议

署名要求 :使用本系列文档,您必须保留本页中的文档来源信息,具体请参考《知识共享 (Creative Commons) 署名4.0公共许可协议国际版》。

非商业化使用 :遵循《知识共享公共许可协议(CCPL)》,并且您不能将本文档用于马哥教育相关业务之外的其他任何商业用途。

您的权利 :遵循本协议后,在马哥教育相关业务之外的领域,您将有以下使用权限:

共享 — 允许以非商业性质复制本作品。

改编 — 在原基础上修改、转换或以本作品为基础进行重新编辑并用于个人非商业使用。

致谢

本文档中,部分素材参考了相关项目的文档,以及通过搜索引擎获得的内容,这里先一并向相关的贡献者表示感谢。

← 上一章:高性能WEB服务NGINX | 返回总目录 | 下一章:企业级WEB应用服务器TOMCAT →


内容概述

  • JumpServer 介绍

  • JumpServer 部署

  • JumpServer 常用功能

1 堡垒机和 JumpServer

1.1 跳板机和堡垒机

跳板机

跳板机是一种用于单点登陆的主机应用系统。跳板机通常是由一台服务器能过特定的软件实现,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。但跳板机没有实现对运维人员操作行为的控制和审计,此外,跳板机存在严重的安全风险,一旦跳板机系统被攻入,则将后端资源风险完全暴露无遗。对于一些服务(如:telnet)可以通过跳板机来完成一定的控制访问,但是对于更多的服务(SSH、RDP等)来讲,就显得力不从心了。

堡垒机

由于跳板机的不足,更多的组织需要更先进、更好的安全技术,来实现运维操作管理和安全。堡垒机开始以独立的产品形态被广泛部署,有效降低了运维操作风险,使得运维操作管理变得更简单、更安全。堡垒机能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一些统计报表配合管理规范,从而不断提升IT内控的合规性。

1.2 JumpServer 简介

JumpServer 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。为互联网企业提供了认证,授权,审计,自动化运维等功能。

JumpServer 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。

JumpServer 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。

JumpServer 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

JumpServer 历史

官方地址: http://www.jumpserver.org/

github项目: https://github.com/jumpserver

1.3 JumpServer 生产应用场景

1.4 JumpServer的优势和功能

1.4.1 特色优势

  • 开源: 零门槛,线上快速获取和安装分布式: 轻松支持大规模并发访问;

  • 无插件: 仅需浏览器,极致的 Web Terminal 使用体验多云支持: 一套系统,同时管理不同云上面的资产云端存储: 审计录像云端存储,永不丢失多租户: 一套系统,多个子公司和部门同时使用

1.4.2 功能列表

堡垒机四个核心能力: 运维安全审计的4A规范

身份认证 Authentication 登录认证 资源统一登录与认证
LDAP/AD认证
RADIUS认证
OpenID认证(实现单点登录)
CAS认证 (实现单点登录)
MFA认证 MFA二次认证(Google
Authenticator)
RADIUS二次认证
登录复核(X-PACK) 用户登录行为受管理员的监管与控制
账号管理Account 集中账号 管理用户管理
系统用户管理
统一密码 资产密码托管
自动生成密码
自动推送密码
密码过期设置
批量改密(X-PACK) 定期批量改密
多种密码策略
多云纳管(X-PACK) 对私有云、公有云资产自动统一纳管
收集用户(X-PACK) 自定义任务定期收集主机用户
密码匣子(X-PACK) 统一对资产主机的用户密码进行查看、更新、测试操作
授权控制Authorization 多维授权 对用户、用户组、资产、资产节点、应用以及系统用户进行授权
资产授权 资产以树状结构进行展示
资产和节点均可灵活授权
节点内资产自动继承授权
子节点自动继承父节点授权
应用授权 实现更细粒度的应用级授权
身份认证 Authentication 登录认证 资源统一登录与认证
MySQL数据库应用、RemoteApp
远程应用(X-PACK)
动作授权 实现对授权资产的文件上传、下载以及连接动作的控制
时间授权 实现对授权资源使用时间段的限制
特权指令 实现对特权指令的使用
(支持黑白名单)
命令过滤 实现对授权系统用户所执行的命令进行控制
文件传输 SFTP文件上传/下载
文件管理 实现Web SFTP文件管理
工单管理(X-PACK) 支持对用户登录请求行为进行控制
组织管理(X-PACK) 实现多租户管理与权限隔离
安全审计Audit 操作审计 用户操作行为审计
会话审计 在线会话内容审计
历史会话内容审计
录像审计 支持对Linux、Windows
等资产操作的录像进行回放审计
支持对RemoteApp(X-
PACK)、MySQL等应用操作的录像进行回放审计
指令审计 支持对资产和应用等操作的命令进行审计
文件传输 可对文件的上传、下载记录进行审计

1.5 JumpServer 组成

Lina

前端 UI 项目,实现web页面展示,主要使用 Vue,Element UI 完成

Core

  • 现指 Jumpserver 管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API。

Coco/Koko

实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。

Koko 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。

Luna

现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。主要使用Angular CLI 完成

Lion

Lion 使用了 Apache 软件基金会的开源项目 Guacamole,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP/VNC 协议跳板机功能。

2 安装 JumpServer

官方说明

https://docs.jumpserver.org/zh/master/install/setup_by_fast/

2.1 安装要求

JumpServer 环境要求:

  • 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)

  • 操作系统: Linux 发行版 x86_64

  • Python = 3.6.x

  • MySQL Server ≥ 5.6 或者 Mariadb Server ≥ 5.5.56 数据库编码要求 uft8,新版要求5.7以上 Redis: 新版要求6.0以上

2.2 安装方法介绍

官方提供了多种安装方法

  • 手动部署: 按组件逐个实现

  • 极速部署: 资产数量不多,或者测试体验的用户请使用本脚本快速部署容器部署: 基于docker 实现

  • 分布式部署: 适用大型环境

2.3 基于容器部署

官方文档:

https://github.com/jumpserver/Dockerfile/tree/master/allinone
https://docs.jumpserver.org/zh/master/install/docker_install/

2.3.1 环境说明

https://github.com/jumpserver/Dockerfile/tree/master/allinone

使用外置 MySQL 数据库和 Redis:

  • 外置数据库要求 MySQL 版本大于等于 5.7

  • 外置 Redis 要求 Redis 版本大于等于 6.0

# 自行部署 MySQL 可以参考
(https://docs.jumpserver.org/zh/master/install/setup_by_lb/#mysql)
# mysql 创建用户并赋予权限, 请自行替换 nu4x599Wq7u0Bn8EABh3J91G 为自己的密码
mysql -u root -p
create database jumpserver default charset 'utf8';
create user 'jumpserver'@'%' identified by 'nu4x599Wq7u0Bn8EABh3J91G';
grant all on jumpserver.* to 'jumpserver'@'%';
flush privileges;
# 自行部署 Redis 可以参考
(https://docs.jumpserver.org/zh/master/install/setup_by_lb/#redis)

基于容器,安装完毕后可以通过以下方式访问

浏览器访问: http://<容器所在服务器IP> 默认管理员账户 admin 密码 admin

SSH 访问: ssh -p 2222 <容器所在服务器IP>

XShell 等工具请添加 connection 连接, 默认 ssh 端口 2222

2.3.2 安装 docker 环境

[root@ubuntu2004 ~]#apt list docker.io
正在列表... 完成
docker.io/focal-updates 20.10.12-0ubuntu2~20.04.1 amd64
N: 还有2个版本。请使用-a选项来查看它(他们)。
[root@ubuntu2004 ~]#apt-cache madison docker.io
 docker.io | 20.10.12-0ubuntu2~20.04.1 | http://mirrors.aliyun.com/ubuntu focal-
updates/universe amd64 Packages
 docker.io | 20.10.7-0ubuntu5~20.04.2 | http://mirrors.aliyun.com/ubuntu focal-
security/universe amd64 Packages
 docker.io | 19.03.8-0ubuntu1 | http://mirrors.aliyun.com/ubuntu focal/universe
amd64 Packages
 docker.io | 19.03.8-0ubuntu1 | http://mirrors.aliyun.com/ubuntu focal/universe
Sources
 docker.io | 20.10.7-0ubuntu5~20.04.2 | http://mirrors.aliyun.com/ubuntu focal-
security/universe Sources
 docker.io | 20.10.12-0ubuntu2~20.04.1 | http://mirrors.aliyun.com/ubuntu focal-
updates/universe Sources
[root@ubuntu2004 ~]#apt -y install  docker.io
[root@ubuntu2004 ~]#docker version
Client:
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.2
 Git commit:        20.10.12-0ubuntu2~20.04.1
 Built:             Wed Apr  602:14:38 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Server:
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.2
  Git commit:       20.10.12-0ubuntu2~20.04.1
  Built:            Thu Feb 1015:03:35 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.9-0ubuntu1~20.04.4
  GitCommit:
 runc:
  Version:          1.1.0-0ubuntu1~20.04.1
  GitCommit:
 docker-init:
  Version:          0.19.0
  GitCommit:
#镜像加速(可选)
[root@ubuntu2004 ~]#echo '{"registry-mirrors":
["http://si7y70hh.mirror.aliyuncs.com"], "insecure-registries":
["harbor.wang.org:80"]' > /etc/docker/daemon.json
[root@ubuntu2004 ~]#systemctl restart docker

2.3.3 安装 MySQL 服务

官方说明:

https://docs.jumpserver.org/zh/master/install/prod/distributed_03/

MySQL要求

createdatabase jumpserver defaultcharset'utf8';
createuser'jumpserver'@'%' identified by 'nu4x599Wq7u0Bn8EABh3J91G';
grantallon jumpserver.* to'jumpserver'@'%';
flushprivileges;
2.3.3.1 下载 MySQL 镜像查看默认配置

下载MySQL镜像并运行, 查看当前默认配置不符合JumpServer安装要求

#下载MySQL镜像并启动
[root@ubuntu2004 ~]#docker run  --rm --name mysql  -e MYSQL_ROOT_PASSWORD=123456
-e MYSQL_DATABASE=jumpserver -e MYSQL_USER=jumpserver -e MYSQL_PASSWORD=123456 -d
-p 3306:3306 mysql:5.7.30
#查看默认的MySQL容器配置不符合jumpserver要求
[root@ubuntu2004 ~]#docker exec -it mysql bash
root@f44e1c85f088:/# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h'for help. Type '\c' to clear the current input statement.
mysql> show create database jumpserver;
+------------+------------------------------------------------------------------
-----+
| Database   | Create Database
    |
+------------+------------------------------------------------------------------
-----+
| jumpserver | CREATE DATABASE `jumpserver` /*!40100 DEFAULT CHARACTER SET
latin1 */ |
+------------+------------------------------------------------------------------
-----+
1 row inset (0.01 sec)
mysql> select user,host from  mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| jumpserver    | %         |
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
5 rows inset (0.00 sec)
mysql> exit
Bye
#查看配置文件路径
root@f44e1c85f088:/# cat /etc/mysql/mysql.cnf
......
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
#默认配置文件
root@f44e1c85f088:/# tree /etc/mysql/
/etc/mysql/
|-- conf.d
|   |-- docker.cnf
|   |-- mysql.cnf
|   `-- mysqldump.cnf
|-- my.cnf -> /etc/alternatives/my.cnf
|-- my.cnf.fallback
|-- mysql.cnf
`-- mysql.conf.d
`-- mysqld.cnf
2 directories, 7 files
root@f44e1c85f088:/#  ls -R /etc/mysql
/etc/mysql:
conf.d  my.cnf  my.cnf.fallback  mysql.cnf  mysql.conf.d
/etc/mysql/conf.d:
docker.cnf  mysql.cnf  mysqldump.cnf
/etc/mysql/mysql.conf.d:
mysqld.cnf
#默认配置文件
root@f44e1c85f088:/# grep '^[^#]' /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
datadir     = /var/lib/mysql
symbolic-links=0
#默认配置文件
root@f44e1c85f088:/# cat /etc/mysql/conf.d/mysql.cnf
[mysql]
root@f44e1c85f088:/# exit
exit
[root@centos8 ~]#docker rm -f mysql
2.3.3.2 在宿主机准备MySQL配置文件
#准备相关目录
[root@ubuntu2004 ~]#mkdir -p /etc/mysql/mysql.conf.d/
[root@ubuntu2004 ~]#mkdir -p /etc/mysql/conf.d/
#生成服务器配置文件,指定字符集
[root@ubuntu2004 ~]#tee /etc/mysql/mysql.conf.d/mysqld.cnf <<EOF
[mysqld]
pid-file= /var/run/mysqld/mysqld.pid
socket= /var/run/mysqld/mysqld.sock
datadir= /var/lib/mysql
symbolic-links=0
character-set-server=utf8   #添加此行,指定字符集
EOF
#生成客户端配置文件,指定字符集
[root@ubuntu2004 ~]#tee /etc/mysql/conf.d/mysql.cnf <<EOF
[mysql]
default-character-set=utf8  #添加此行,指定字符集
EOF
#查看配置文件列表
[root@ubuntu2004 ~]#tree /etc/mysql/
/etc/mysql/
├── conf.d
│   └── mysql.cnf
└── mysql.conf.d
    └── mysqld.cnf
2 directories, 2 files
2.3.3.3 启动 MySQL 容器

将上面宿主机的设置好的配置文件挂载至MySQL容器

[root@ubuntu2004 ~]#docker run -d -p 3306:3306 --name mysql --restart always \
-eMYSQL_ROOT_PASSWORD=123456 \
-eMYSQL_DATABASE=jumpserver  \
  • -e MYSQL_USER=jumpserver \

  • -e MYSQL_PASSWORD=123456 \

  • -v /data/mysql:/var/lib/mysql \

  • -v /etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \

  • -v /etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf mysql:5.7.30

2.3.3.4 验证 MySQL

[root@ubuntu2004 ~]#docker exec -it mysql sh
# mysql -p123456 -e 'show variables like "character%"'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
# mysql -p123456 -e 'show variables like "collation%"'
mysql: [Warning] Using a password on the command line interface can be insecure.
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
# cat /var/lib/mysql/jumpserver/db.opt
default-character-set=utf8
default-collation=utf8_general_ci
# cat /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
pid-file= /var/run/mysqld/mysqld.pid
socket= /var/run/mysqld/mysqld.sock
datadir= /var/lib/mysql
symbolic-links=0
character-set-server=utf8
# cat /etc/mysql/conf.d/mysql.cnf
[mysql]
default-character-set=utf8
# mysql -p123456 -e 'select user,host from mysql.user'
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| jumpserver    | %         |
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
# mysql -p123456 -e 'select user,host from mysql.user'
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| jumpserver    | %         |
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
# ls /var/lib/mysql/ -l
total 188484
-rw-r-----1 mysql mysql       56 Aug 1608:43 auto.cnf
-rw-------1 mysql mysql     1680 Aug 1608:43 ca-key.pem
-rw-r--r--1 mysql mysql     1112 Aug 1608:43 ca.pem
-rw-r--r--1 mysql mysql     1112 Aug 1608:43 client-cert.pem
-rw-------1 mysql mysql     1676 Aug 1608:43 client-key.pem
-rw-r-----1 mysql mysql     1346 Aug 1608:43 ib_buffer_pool
-rw-r-----1 mysql mysql 50331648 Aug 1608:43 ib_logfile0
-rw-r-----1 mysql mysql 50331648 Aug 1608:43 ib_logfile1
-rw-r-----1 mysql mysql 79691776 Aug 1608:43 ibdata1
-rw-r-----1 mysql mysql 12582912 Aug 1608:43 ibtmp1
drwxr-x--- 2 mysql mysql       20 Aug 1608:43 jumpserver
drwxr-x--- 2 mysql mysql     4096 Aug 1608:43 mysql
drwxr-x--- 2 mysql mysql     8192 Aug 1608:43 performance_schema
-rw-------1 mysql mysql     1676 Aug 1608:43 private_key.pem
-rw-r--r--1 mysql mysql      452 Aug 1608:43 public_key.pem
-rw-r--r--1 mysql mysql     1112 Aug 1608:43 server-cert.pem
-rw-------1 mysql mysql     1676 Aug 1608:43 server-key.pem
drwxr-x--- 2 mysql mysql     8192 Aug 1608:43 sys

# 或者执行下面

[root@ubuntu2004 ~]#docker exec mysql  mysql -p123456 -e 'show variables like
"character%"'
[root@ubuntu2004 ~]#docker exec mysql mysql -p123456 -e 'show variables like
"collation%"'
[root@ubuntu2004 ~]#docker exec mysql cat /var/lib/mysql/jumpserver/db.opt
[root@ubuntu2004 ~]#docker exec mysql cat /etc/mysql/conf.d/mysql.cnf
[root@ubuntu2004 ~]#docker exec mysql mysql -p123456 -e 'select user,host from
mysql.user'
[root@ubuntu2004 ~]#docker exec mysql ls /var/lib/mysql/ -l
[root@ubuntu2004 ~]#ls /data/mysql/
auto.cnf    client-cert.pem  ibdata1      ibtmp1      performance_schema  server-
cert.pem
ca-key.pem  client-key.pem   ib_logfile0  jumpserver  private_key.pem     server-
key.pem
ca.pem      ib_buffer_pool   ib_logfile1  mysql       public_key.pem      sys

# 测试连接 MySQL

[root@ubuntu2004 ~]#yum -y install mysql
[root@ubuntu2004 ~]#mysql -ujumpserver -p123456 -h10.0.0.8
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h'for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jumpserver         |
+--------------------+
2 rows inset (0.00 sec)
MySQL [(none)]> use jumpserver
Database changed
MySQL [jumpserver]> show tables;
Empty set (0.00 sec)

2.3.4 安装 Redis 服务

官方说明

https://docs.jumpserver.org/zh/master/install/prod/distributed_04/

新版要求:

外置 Redis 要求 Redis 版本大于等于 6.0
注意:不支持redis7.0
2.3.4.1 启动 Redis
[root@ubuntu2004 ~]#docker run -d -p 6379:6379 --name redis --restart always
redis:6.2.7
2b75e77aa35b79dcb0e4cffb41d124c10124cdfda959e3131f7927e8808f9417
2.3.4.2 验证 Redis连接
[root@ubuntu2004 ~]#yum  -y install redis
[root@ubuntu2004 ~]#redis-cli -h 10.0.0.8
10.0.0.8:6379> info
# Server
redis_version:5.0.9
redis_git_sha1:00000000
redis_git_dirty:0

2.3.5 部署 JumpServer

2.3.5.1 生成 key 和 token

参考官方说明:

https://github.com/jumpserver/Dockerfile/tree/master/allinone
https://docs.jumpserver.org/zh/master/install/docker_install/

需要先生成 key 和 token

[root@ubuntu2004 ~]#cat  key.sh
#!/bin/bash
if [ ! "$SECRET_KEY" ]; then
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
echo"SECRET_KEY=$SECRET_KEY" >> ~/.bashrc;
echoSECRET_KEY=$SECRET_KEY;
else
echoSECRET_KEY=$SECRET_KEY;
fi
if [ ! "$BOOTSTRAP_TOKEN" ]; then
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`;
echo"BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc;
echoBOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN;
else
echoBOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN;
fi
[root@ubuntu2004 ~]#bash key.sh
[root@ubuntu2004 ~]#tail -n2 .bashrc
SECRET_KEY=9RTRBg3AjHjvUUNCUpHUH5LirSFazRozk1UyOQcoKkwMExeUEm
BOOTSTRAP_TOKEN=1OlaSdCoUpSQPjH6
2.3.5.2 运行容器

范例: JumpServer 2.25.5 版

docker run --name jms_all -d \
-v /opt/jumpserver/core/data:/opt/jumpserver/data \
-v /opt/jumpserver/koko/data:/opt/koko/data \
-v /opt/jumpserver/lion/data:/opt/lion/data \
-p80:80 \
-p2222:2222 \
-eSECRET_KEY=QabRlIzG7EadnZofxq5Zchb94ewJRvdxv5UMnbI9xeCUb3NDUR \
-eBOOTSTRAP_TOKEN=0MoIAZmTyPGAEf24 \
-eLOG_LEVEL=ERROR \
-eDB_HOST=10.0.0.100 \
-eDB_PORT=3306 \
-eDB_USER=jumpserver \
-eDB_PASSWORD=123456 \
-eDB_NAME=jumpserver \
-eREDIS_HOST=10.0.0.100 \
-eREDIS_PORT=6379 \
-eREDIS_PASSWORD='' \
--privileged=true \
  jumpserver/jms_all:v2.25.5

范例: JumpServer 2.22.1 版

docker run --name jms_all -d \
-v /opt/jumpserver/core/data:/opt/jumpserver/data \
-v /opt/jumpserver/koko/data:/opt/koko/data \
-v /opt/jumpserver/lion/data:/opt/lion/data \
-p80:80 \
-p2222:2222 \
-eSECRET_KEY=es2rMtYZ5NpWLCUtETTbMen4FoowzTzTjk6fTJaQiNcm85BsTY \
-eBOOTSTRAP_TOKEN=aVA5vsQj5f59prIk \
-eLOG_LEVEL=ERROR \
-eDB_HOST=10.0.0.100 \
-eDB_PORT=3306 \
-eDB_USER=jumpserver \
-eDB_PASSWORD=123456 \
-eDB_NAME=jumpserver \
-eREDIS_HOST=10.0.0.100 \
-eREDIS_PORT=6379 \
-eREDIS_PASSWORD='' \
--privileged=true \
  jumpserver/jms_all:v2.22.1
#注意: 不支持redis7.0

范例: jumpserver 2.19.1 版

[root@ubuntu2004 ~]#docker run --name jms_all -d \
-v /opt/jumpserver/core/data:/opt/jumpserver/data \
  • -v /opt/jumpserver/koko/data:/opt/koko/data \
-v /opt/jumpserver/lion/data:/opt/lion/data \
-p80:80 \
  • -p 2222:2222 \

  • -e SECRET_KEY=kWQdmdCQKjaWlHYpPhkNQDkfaRulM6YnHctsHLlSPs8287o2kW \

  • -e BOOTSTRAP_TOKEN=KXOeyNgDeTdpeu9q \

-eLOG_LEVEL=ERROR \
  • -e DB_HOST=10.0.0.100 \
-eDB_PORT=3306 \
-eDB_USER=jumpserver \
-eDB_PASSWORD=123456 \
-eDB_NAME=jumpserver \
-eREDIS_HOST=10.0.0.100 \
-eREDIS_PORT=6379 \
-eREDIS_PASSWORD='' \
--privileged=true \
  jumpserver/jms_all:v2.19.1

范例: jumpserver 2.15.3版

[root@centos8 ~]#docker run --name jms_all -d \
-v /opt/jumpserver/core/data:/opt/jumpserver/data \
-v /opt/jumpserver/koko/data:/opt/koko/data \
-v /opt/jumpserver/lion/data:/opt/lion/data \
-p80:80 \
-p2222:2222 \
-eSECRET_KEY=kWQdmdCQKjaWlHYpPhkNQDkfaRulM6YnHctsHLlSPs8287o2kW \
-eBOOTSTRAP_TOKEN=KXOeyNgDeTdpeu9q \
-eLOG_LEVEL=ERROR \
-eDB_HOST=10.0.0.18 \   #不支持127.0.0.1
-eDB_PORT=3306 \
-eDB_USER=jumpserver \
-eDB_PASSWORD=123456 \
-eDB_NAME=jumpserver \
-eREDIS_HOST=10.0.0.18 \   #不支持127.0.0.1
-eREDIS_PORT=6379 \
-eREDIS_PASSWORD=123456 \
--privileged=true \
  jumpserver/jms_all:v2.15.3

范例: jumpserver 2.5.3版

[root@centos8 ~]#docker run --name jms_all -d \
-v /opt/jumpserver/data:/opt/jumpserver/data \
-p80:80 \
-p2222:2222 \
--restart always \
-eSECRET_KEY=9RTRBg3AjHjvUUNCUpHUH5LirSFazRozk1UyOQcoKkwMExeUEm \
-eBOOTSTRAP_TOKEN=1OlaSdCoUpSQPjH6 \
-eDB_HOST=10.0.0.18 \ #不支持127.0.0.1
-eDB_PORT=3306 \
-eDB_USER=root \
-eDB_PASSWORD=123456 \
-eDB_NAME=jumpserver \
-eREDIS_HOST=127.0.0.1 \
-eREDIS_PORT=6379 \
-eREDIS_PASSWORD='' \
--privileged=true \
  jumpserver/jms_all:v2.5.3
#初次启动容器需要等待一会儿才能完成

范例: jumpserver 2.1.2版

[root@centos7 ~]#docker run --name jms_all -d   -v
/opt/jumpserver/data:/opt/jumpserver/data   -p 80:80   -p 2222:2222   -e
SECRET_KEY=9RTRBg3AjHjvUUNCUpHUH5LirSFazRozk1UyOQcoKkwMExeUEm   -e
BOOTSTRAP_TOKEN=1OlaSdCoUpSQPjH6   -e DB_HOST=10.0.0.8 -e DB_PORT=3306   -e
DB_USER=root -e DB_PASSWORD=123456   -e DB_NAME=jumpserver   -e
REDIS_HOST=10.0.0.8   -e REDIS_PORT=6379 -e REDIS_PASSWORD=''
jumpserver/jms_all:v2.1.2
2.3.5.3 验证是否成功

2.3.5.3.1 查看日志

范例: 查看jumpserver 2.22.1日志确认成功

[root@ubuntu2004 ~]#docker logs -f jms_all
Starting supervisor: supervisord.
Time: 2022-05-27 06:15:16
The Installation is Complete.
    --------------------------------------------------
    | Documentation:    https://docs.jumpserver.org/ |
    | Official Website: https://www.jumpserver.org/  |
    --------------------------------------------------
       ██╗██╗   ██╗███╗   ███╗██████╗ ███████╗███████╗██████╗ ██╗
██╗███████╗██████╗
       ██║██║   ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║
██║██╔════╝██╔══██╗
       ██║██║   ██║██╔████╔██║██████╔╝███████╗█████╗  ██████╔╝██║   ██║█████╗
██████╔╝
  ██   ██║██║   ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝  ██╔══██╗╚██╗ ██╔╝██╔══╝
██╔══██╗
  ╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║     ███████║███████╗██║  ██║ ╚████╔╝
███████╗██║  ██║
   ╚════╝  ╚═════╝ ╚═╝     ╚═╝╚═╝     ╚══════╝╚══════╝╚═╝  ╚═╝  ╚═══╝
╚══════╝╚═╝  ╚═╝
                                                                   Version:
v2.22.1
Default Access:
username: admin  password: admin
LOG_LEVEL: ERROR
JumpServer Logs:

范例: 查看jumpserver 2.5.3日志确认成功

[root@centos8 ~]#docker logs -f jms_all
2020-12-0815:35:31 Tue Dec  815:35:31 2020
2020-12-0815:35:31 JumpServer version v2.5.3, more see
https://www.jumpserver.org
2020-12-0815:35:31 Check database connection ...
users
 [ ] 0001_initial
 [ ] 0002_auto_20171225_1157_squashed_0019_auto_20190304_1459 (18 squashed
migrations)
 [ ] 0020_auto_20190612_1825
 [ ] 0021_auto_20190625_1104
 [ ] 0022_auto_20190625_1105
 [ ] 0023_auto_20190724_1525
 [ ] 0024_auto_20191118_1612
 [ ] 0025_auto_20200206_1216
 [ ] 0026_auto_20200508_2105
 [ ] 0027_auto_20200616_1503
 [ ] 0028_auto_20200728_1805
 [ ] 0029_auto_20200814_1650
 [ ] 0030_auto_20200819_2041
2020-12-0815:35:37 Database connect success
2020-12-0815:35:37 Check database structure change ...
2020-12-0815:35:37 Migrate model change to database ...
Operations to perform:
  Apply all migrations: admin, applications, assets, audits, auth,
authentication, captcha, common, contenttypes, django_cas_ng, django_celery_beat,
jms_oidc_rp, ops, orgs, perms, sessions, settings, terminal, tickets, users
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying users.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying assets.0001_initial... OK
  Applying assets.0002_auto_20180105_1807_squashed_0009_auto_20180307_1212... OK
  Applying assets.0010_auto_20180307_1749_squashed_0019_auto_20180816_1320... OK
  Applying assets.0020_auto_20180816_1652... OK
  Applying assets.0021_auto_20180903_1132... OK
  Applying assets.0022_auto_20181012_1717... OK
  Applying assets.0023_auto_20181016_1650... OK
  Applying assets.0024_auto_20181219_1614... OK
  Applying assets.0025_auto_20190221_1902... OK
  Applying assets.0026_auto_20190325_2035... OK
  Applying assets.0027_auto_20190521_1703... OK
  Applying assets.0028_protocol... OK
  Applying assets.0029_auto_20190522_1114... OK
  Applying assets.0030_auto_20190619_1135... OK
  Applying assets.0031_auto_20190621_1332... OK
  Applying assets.0032_auto_20190624_2108... OK
  Applying assets.0033_auto_20190624_2108... OK
  Applying assets.0034_auto_20190705_1348... OK
  Applying assets.0035_auto_20190711_2018... OK
  Applying assets.0036_auto_20190716_1535... OK
  Applying assets.0037_auto_20190724_2002... OK
  Applying assets.0038_auto_20190911_1634... OK
  Applying assets.0039_authbook_is_active... OK
  Applying assets.0040_auto_20190917_2056... OK
  Applying assets.0041_gathereduser... OK
  Applying assets.0042_favoriteasset... OK
  Applying assets.0043_auto_20191114_1111... OK
  Applying assets.0044_platform... OK
  Applying assets.0045_auto_20191206_1607... OK
  Applying assets.0046_auto_20191218_1705... OK
  Applying assets.0047_assetuser... OK
  Applying assets.0048_auto_20191230_1512... OK
  Applying assets.0049_systemuser_sftp_root... OK
  Applying assets.0050_auto_20200711_1740... OK
  Applying assets.0051_auto_20200713_1143... OK
  Applying assets.0052_auto_20200715_1535... OK
  Applying assets.0053_auto_20200723_1232... OK
  Applying assets.0054_auto_20200807_1032... OK
  Applying assets.0055_auto_20200811_1845... OK
  Applying assets.0056_auto_20200904_1751... OK
  Applying assets.0057_fill_node_value_assets_amount_and_parent_key...
  ................................................................. OK
  Applying users.0002_auto_20171225_1157_squashed_0019_auto_20190304_1459... OK
  Applying perms.0001_initial... OK
  Applying perms.0002_auto_20171228_0025_squashed_0009_auto_20180903_1132... OK
  Applying perms.0003_action... OK
  Applying perms.0004_assetpermission_actions... OK
  Applying applications.0001_initial... OK
  Applying perms.0005_auto_20190521_1619... OK
  Applying perms.0006_auto_20190628_1921... OK
  Applying perms.0007_remove_assetpermission_actions... OK
  Applying perms.0008_auto_20190911_1907... OK
  Applying perms.0009_remoteapppermission_system_users... OK
  Applying applications.0002_remove_remoteapp_system_user... OK
  Applying applications.0003_auto_20191210_1659... OK
  Applying applications.0004_auto_20191218_1705... OK
  Applying applications.0005_k8sapp... OK
  Applying applications.0006_application... OK
  Applying assets.0058_auto_20201023_1115... OK
  Applying assets.0059_auto_20201027_1905... OK
  Applying assets.0060_node_full_value...
- Start migrate node value if has /
- Start migrate node full value
 OK
  Applying assets.0061_auto_20201116_1757... OK
  Applying assets.0062_auto_20201117_1938... OK
  Applying audits.0001_initial... OK
  Applying audits.0002_ftplog_org_id... OK
  Applying audits.0003_auto_20180816_1652... OK
  Applying audits.0004_operatelog_passwordchangelog_userloginlog... OK
  Applying audits.0005_auto_20190228_1715... OK
  Applying audits.0006_auto_20190726_1753... OK
  Applying audits.0007_auto_20191202_1010... OK
  Applying audits.0008_auto_20200508_2105... OK
  Applying audits.0009_auto_20200624_1654... OK
  Applying audits.0010_auto_20200811_1122... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying authentication.0001_initial... OK
  Applying authentication.0002_auto_20190729_1423... OK
  Applying authentication.0003_loginconfirmsetting... OK
  Applying authentication.0004_ssotoken... OK
  Applying captcha.0001_initial... OK
  Applying common.0001_initial... OK
  Applying common.0002_auto_20180111_1407... OK
  Applying common.0003_setting_category... OK
  Applying common.0004_setting_encrypted... OK
  Applying common.0005_auto_20190221_1902... OK
  Applying common.0006_auto_20190304_1515... OK
  Applying django_cas_ng.0001_initial... OK
  Applying django_celery_beat.0001_initial... OK
  Applying django_celery_beat.0002_auto_20161118_0346... OK
  Applying django_celery_beat.0003_auto_20161209_0049... OK
  Applying django_celery_beat.0004_auto_20170221_0000... OK
  Applying django_celery_beat.0005_add_solarschedule_events_choices... OK
  Applying django_celery_beat.0006_auto_20180322_0932... OK
  Applying django_celery_beat.0007_auto_20180521_0826... OK
  Applying django_celery_beat.0008_auto_20180914_1922... OK
  Applying django_celery_beat.0006_auto_20180210_1226... OK
  Applying django_celery_beat.0006_periodictask_priority... OK
  Applying django_celery_beat.0009_periodictask_headers... OK
  Applying django_celery_beat.0010_auto_20190429_0326... OK
  Applying django_celery_beat.0011_auto_20190508_0153... OK
  Applying django_celery_beat.0012_periodictask_expire_seconds... OK
  Applying jms_oidc_rp.0001_initial... OK
  Applying ops.0001_initial... OK
  Applying ops.0002_celerytask... OK
  Applying ops.0003_auto_20181207_1744... OK
  Applying ops.0004_adhoc_run_as... OK
  Applying ops.0005_auto_20181219_1807... OK
  Applying ops.0006_auto_20190318_1023... OK
  Applying ops.0007_auto_20190724_2002... OK
  Applying ops.0008_auto_20190919_2100... OK
  Applying ops.0009_auto_20191217_1713... OK
  Applying ops.0010_auto_20191217_1758... OK
  Applying ops.0011_auto_20200106_1534... OK
  Applying ops.0012_auto_20200108_1659... OK
  Applying ops.0013_auto_20200108_1706... OK
  Applying ops.0014_auto_20200108_1749... OK
  Applying ops.0015_auto_20200108_1809... OK
  Applying ops.0016_commandexecution_org_id... OK
  Applying ops.0017_auto_20200306_1747... OK
  Applying ops.0018_auto_20200509_1434... OK
  Applying orgs.0001_initial... OK
  Applying orgs.0002_auto_20180903_1132... OK
  Applying orgs.0003_auto_20190916_1057... OK
  Applying orgs.0004_organizationmember... OK
  Applying orgs.0005_auto_20200721_1937... OK
  Applying orgs.0006_auto_20200721_1937... OK
  Applying orgs.0007_auto_20200728_1805... OK
  Applying orgs.0008_auto_20200819_2041... OK
  Applying orgs.0009_auto_20201023_1628... OK
  Applying users.0020_auto_20190612_1825... OK
  Applying users.0021_auto_20190625_1104... OK
  Applying users.0022_auto_20190625_1105... OK
  Applying users.0023_auto_20190724_1525... OK
  Applying users.0024_auto_20191118_1612... OK
  Applying users.0025_auto_20200206_1216... OK
  Applying users.0026_auto_20200508_2105... OK
  Applying users.0027_auto_20200616_1503... OK
  Applying users.0028_auto_20200728_1805... OK
  Applying users.0029_auto_20200814_1650... OK
  Applying users.0030_auto_20200819_2041... OK
  Applying perms.0010_auto_20191218_1705... OK
  Applying perms.0011_auto_20200721_1739... OK
  Applying perms.0012_k8sapppermission... OK
2020-12-0815:36:04 [node ERROR] Node parent nodein mapper:  Default
  Applying perms.0013_rebuildusertreetask_usergrantedmappingnode... OK
  Applying perms.0014_build_users_perm_tree... OK
  Applying perms.0015_auto_20200929_1728... OK
  Applying perms.0016_applicationpermission... OK
  Applying sessions.0001_initial... OK
  Applying settings.0001_initial... OK
  Applying terminal.0001_initial... OK
  Applying terminal.0002_auto_20171228_0025_squashed_0009_auto_20180326_0957...
OK
  Applying terminal.0010_auto_20180423_1140... OK
  Applying terminal.0011_auto_20180807_1116... OK
  Applying terminal.0012_auto_20180816_1652... OK
  Applying terminal.0013_auto_20181123_1113... OK
  Applying terminal.0014_auto_20181226_1441... OK
  Applying terminal.0015_auto_20190923_1529... OK
  Applying terminal.0016_commandstorage_replaystorage... OK
  Applying terminal.0017_auto_20191125_0931... OK
  Applying terminal.0018_auto_20191202_1010... OK
  Applying terminal.0019_auto_20191206_1000... OK
  Applying terminal.0020_auto_20191218_1721... OK
  Applying terminal.0021_auto_20200213_1316... OK
  Applying terminal.0022_session_is_success... OK
  Applying terminal.0023_command_risk_level... OK
  Applying terminal.0024_auto_20200715_1713... OK
  Applying terminal.0025_auto_20200810_1735... OK
  Applying terminal.0026_auto_20201027_1905... OK
  Applying terminal.0027_auto_20201102_1651... OK
  Applying terminal.0028_auto_20201110_1918... OK
  Applying terminal.0029_auto_20201116_1757... OK
  Applying tickets.0001_initial... OK
  Applying tickets.0002_auto_20200728_1146... OK
  Applying tickets.0003_auto_20200804_1551... OK
  Applying tickets.0004_ticket_comment... OK
  Applying tickets.0005_ticket_meta_confirmed_system_users... OK
  Applying tickets.0006_auto_20201023_1628... OK
2020-12-0815:36:06 Collect static files
2020-12-0815:36:10 Collect static files done
Starting guacd: SUCCESS
guacd[89]: INFO:    Guacamole proxy daemon (guacd) version 1.2.0 started
Tomcat started.
Jumpserver ALL v2.5.3
官网 http://www.jumpserver.org
文档 http://docs.jumpserver.org
进入容器命令 docker exec -it jms_all /bin/bash

范例: 查看 jumpserver 2.1.2版日志

[root@centos7 ~]#docker logs -f jms_all
2020-08-1617:40:00 Sun Aug 1617:40:00 2020
2020-08-1617:40:00 Jumpserver version v2.1.2, more see
https://www.jumpserver.org
2020-08-1617:40:00 Check database connection ...
users
 [ ] 0001_initial
 [ ] 0002_auto_20171225_1157_squashed_0019_auto_20190304_1459 (18 squashed
migrations)
 [ ] 0020_auto_20190612_1825
 [ ] 0021_auto_20190625_1104
 [ ] 0022_auto_20190625_1105
 [ ] 0023_auto_20190724_1525
 [ ] 0024_auto_20191118_1612
 [ ] 0025_auto_20200206_1216
 [ ] 0026_auto_20200508_2105
 [ ] 0027_auto_20200616_1503
2020-08-1617:40:06 Database connect success
2020-08-1617:40:06 Check database structure change ...
2020-08-1617:40:06 Migrate model change to database ...
Operations to perform:
  Apply all migrations: admin, applications, assets, audits, auth,
authentication, captcha, common, contenttypes, django_cas_ng, django_celery_beat,
jms_oidc_rp, ops, orgs, perms, sessions, settings, terminal, tickets, users
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying users.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying users.0002_auto_20171225_1157_squashed_0019_auto_20190304_1459... OK
  Applying assets.0001_initial... OK
  Applying perms.0001_initial... OK
  Applying assets.0002_auto_20180105_1807_squashed_0009_auto_20180307_1212... OK
  Applying assets.0010_auto_20180307_1749_squashed_0019_auto_20180816_1320... OK
  Applying perms.0002_auto_20171228_0025_squashed_0009_auto_20180903_1132... OK
  Applying perms.0003_action... OK
  Applying perms.0004_assetpermission_actions... OK
  Applying assets.0020_auto_20180816_1652... OK
  Applying assets.0021_auto_20180903_1132... OK
  Applying assets.0022_auto_20181012_1717... OK
  Applying assets.0023_auto_20181016_1650... OK
  Applying assets.0024_auto_20181219_1614... OK
  Applying assets.0025_auto_20190221_1902... OK
  Applying assets.0026_auto_20190325_2035... OK
  Applying applications.0001_initial... OK
  Applying perms.0005_auto_20190521_1619... OK
  Applying perms.0006_auto_20190628_1921... OK
  Applying perms.0007_remove_assetpermission_actions... OK
  Applying perms.0008_auto_20190911_1907... OK
  Applying assets.0027_auto_20190521_1703... OK
  Applying assets.0028_protocol... OK
  Applying assets.0029_auto_20190522_1114... OK
  Applying assets.0030_auto_20190619_1135... OK
  Applying assets.0031_auto_20190621_1332... OK
  Applying assets.0032_auto_20190624_2108... OK
  Applying assets.0033_auto_20190624_2108... OK
  Applying assets.0034_auto_20190705_1348... OK
  Applying assets.0035_auto_20190711_2018... OK
  Applying assets.0036_auto_20190716_1535... OK
  Applying assets.0037_auto_20190724_2002... OK
  Applying assets.0038_auto_20190911_1634... OK
  Applying perms.0009_remoteapppermission_system_users... OK
  Applying applications.0002_remove_remoteapp_system_user... OK
  Applying applications.0003_auto_20191210_1659... OK
  Applying applications.0004_auto_20191218_1705... OK
  Applying assets.0039_authbook_is_active... OK
  Applying assets.0040_auto_20190917_2056... OK
  Applying assets.0041_gathereduser... OK
  Applying assets.0042_favoriteasset... OK
  Applying assets.0043_auto_20191114_1111... OK
  Applying assets.0044_platform... OK
  Applying assets.0045_auto_20191206_1607... OK
  Applying assets.0046_auto_20191218_1705... OK
  Applying assets.0047_assetuser... OK
  Applying assets.0048_auto_20191230_1512... OK
  Applying assets.0049_systemuser_sftp_root... OK
  Applying assets.0050_auto_20200711_1740... OK
  Applying assets.0051_auto_20200713_1143... OK
  Applying assets.0052_auto_20200715_1535... OK
  Applying audits.0001_initial... OK
  Applying audits.0002_ftplog_org_id... OK
  Applying audits.0003_auto_20180816_1652... OK
  Applying audits.0004_operatelog_passwordchangelog_userloginlog... OK
  Applying audits.0005_auto_20190228_1715... OK
  Applying audits.0006_auto_20190726_1753... OK
  Applying audits.0007_auto_20191202_1010... OK
  Applying audits.0008_auto_20200508_2105... OK
  Applying audits.0009_auto_20200624_1654... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying authentication.0001_initial... OK
  Applying authentication.0002_auto_20190729_1423... OK
  Applying authentication.0003_loginconfirmsetting... OK
  Applying captcha.0001_initial... OK
  Applying common.0001_initial... OK
  Applying common.0002_auto_20180111_1407... OK
  Applying common.0003_setting_category... OK
  Applying common.0004_setting_encrypted... OK
  Applying common.0005_auto_20190221_1902... OK
  Applying common.0006_auto_20190304_1515... OK
  Applying django_cas_ng.0001_initial... OK
  Applying django_celery_beat.0001_initial... OK
  Applying django_celery_beat.0002_auto_20161118_0346... OK
  Applying django_celery_beat.0003_auto_20161209_0049... OK
  Applying django_celery_beat.0004_auto_20170221_0000... OK
  Applying
django_celery_beat.0005_add_solarschedule_events_choices_squashed_0009_merge_201
81012_1416... OK
  Applying django_celery_beat.0006_periodictask_priority... OK
  Applying jms_oidc_rp.0001_initial... OK
  Applying ops.0001_initial... OK
  Applying ops.0002_celerytask... OK
  Applying ops.0003_auto_20181207_1744... OK
  Applying ops.0004_adhoc_run_as... OK
  Applying ops.0005_auto_20181219_1807... OK
  Applying ops.0006_auto_20190318_1023... OK
  Applying ops.0007_auto_20190724_2002... OK
  Applying ops.0008_auto_20190919_2100... OK
  Applying ops.0009_auto_20191217_1713... OK
  Applying ops.0010_auto_20191217_1758... OK
  Applying ops.0011_auto_20200106_1534... OK
  Applying ops.0012_auto_20200108_1659... OK
  Applying ops.0013_auto_20200108_1706... OK
  Applying ops.0014_auto_20200108_1749... OK
  Applying ops.0015_auto_20200108_1809... OK
  Applying ops.0016_commandexecution_org_id... OK
  Applying ops.0017_auto_20200306_1747... OK
  Applying ops.0018_auto_20200509_1434... OK
  Applying orgs.0001_initial... OK
  Applying orgs.0002_auto_20180903_1132... OK
  Applying orgs.0003_auto_20190916_1057... OK
  Applying users.0020_auto_20190612_1825... OK
  Applying users.0021_auto_20190625_1104... OK
  Applying users.0022_auto_20190625_1105... OK
  Applying users.0023_auto_20190724_1525... OK
  Applying users.0024_auto_20191118_1612... OK
  Applying perms.0010_auto_20191218_1705... OK
  Applying sessions.0001_initial... OK
  Applying settings.0001_initial... OK
  Applying terminal.0001_initial... OK
  Applying terminal.0002_auto_20171228_0025_squashed_0009_auto_20180326_0957...
OK
  Applying terminal.0010_auto_20180423_1140... OK
  Applying terminal.0011_auto_20180807_1116... OK
  Applying terminal.0012_auto_20180816_1652... OK
  Applying terminal.0013_auto_20181123_1113... OK
  Applying terminal.0014_auto_20181226_1441... OK
  Applying terminal.0015_auto_20190923_1529... OK
  Applying terminal.0016_commandstorage_replaystorage... OK
  Applying terminal.0017_auto_20191125_0931... OK
  Applying terminal.0018_auto_20191202_1010... OK
  Applying terminal.0019_auto_20191206_1000... OK
  Applying terminal.0020_auto_20191218_1721... OK
  Applying terminal.0021_auto_20200213_1316... OK
  Applying terminal.0022_session_is_success... OK
  Applying terminal.0023_command_risk_level... OK
  Applying terminal.0024_auto_20200715_1713... OK
  Applying tickets.0001_initial... OK
  Applying users.0025_auto_20200206_1216... OK
  Applying users.0026_auto_20200508_2105... OK
  Applying users.0027_auto_20200616_1503... OK
2020-08-1617:40:30 Collect static files
2020-08-1617:40:34 Collect static files done
guacd[81]: INFO:    Guacamole proxy daemon (guacd) version 1.2.0 started
Starting guacd: SUCCESS
Tomcat started.
Jumpserver ALL v2.1.2
官网 http://www.jumpserver.org
文档 http://docs.jumpserver.org
有问题请参考 http://docs.jumpserver.org/zh/docs/faq.html
进入容器命令 docker exec -it jms_all /bin/bash
[root@centos7 ~]#
2.3.5.3.2 查看 MySQL 中生成相关表
[root@centos8 ~]#docker exec -it mysql sh
# mysql -ujumpserver -p123456 jumperserver
mysql> showtables;

|+----------------------------------------------+
| Tables_in_jumpserver |
+----------------------------------------------+| |---| || applications_databaseapp || || applications_remoteapp || || assets_adminuser || || assets_asset || || assets_asset_labels || || assets_asset_nodes || || assets_assetgroup || || assets_authbook || || assets_cluster || || assets_commandfilter || || assets_commandfilterrule || || assets_domain || || assets_favoriteasset || || assets_gateway || || assets_gathereduser || || assets_label || || assets_node || || assets_platform || || assets_systemuser || || assets_systemuser_assets || || assets_systemuser_cmd_filters || || assets_systemuser_groups || || assets_systemuser_nodes || || assets_systemuser_users || || audits_ftplog || || audits_operatelog || || audits_passwordchangelog || || audits_userloginlog || || auth_group || || auth_group_permissions ||

|| auth_permission |
hiik| |---| || autentcaton_accessey |
| authentication_loginconfirmsetting || || authentication_loginconfirmsetting_reviewers |
| || authentication_privatetoken || || captcha_captchastore || || django_admin_log || || django_cas_ng_proxygrantingticket || || django_cas_ng_sessionticket || || django_celery_beat_crontabschedule || || django_celery_beat_intervalschedule |
| || django_celery_beat_periodictask || || django_celery_beat_periodictasks || || django_celery_beat_solarschedule || || django_content_type || || django_migrations || || django_session || || jms_oidc_rp_oidcuser || || ops_adhoc || || ops_adhoc_execution || || ops_adhoc_hosts || || ops_celerytask || || ops_commandexecution || || ops_commandexecution_hosts || || ops_task || || orgs_organization || || orgs_organization_admins || || orgs_organization_auditors || || orgs_organization_users |
| || perms_assetpermission || || perms_assetpermission_assets || || perms_assetpermission_nodes || || perms_assetpermission_system_users || || perms_assetpermission_user_groups || || perms_assetpermission_users || || perms_databaseapppermission || |
| perms_databaseapppermission_database_apps || || perms_databaseapppermission_system_users || || perms_databaseapppermission_user_groups || || perms_databaseapppermission_users || || perms_remoteapppermission || || perms_remoteapppermission_remote_apps || || perms_remoteapppermission_system_users |
| || perms_remoteapppermission_user_groups || || perms_remoteapppermission_users || || settings_setting || || terminal || || terminal_command || || terminal_commandstorage || || terminal_replaystorage || |
| terminal_session || || terminal_status || || terminaltask || |_
| tickets_comment || |
| tickets_ticket || || tickets_ticket_assignees || || users_user || || users_user_groups ||

| users_user_user_permissions                  |
| users_usergroup                              |
+----------------------------------------------+
90 rows inset (0.00 sec)
2.3.5.3.3 查看端口
[root@centos8 ~]#ss -ntl
State    Recv-Q Send-Q    Local Address:Port   Peer Address:Port
LISTEN   01280.0.0.0:22          0.0.0.0:*
LISTEN   0100127.0.0.1:25          0.0.0.0:*
LISTEN   0128                   *:2222              *:*
LISTEN   0128                   *:80                *:*
LISTEN   0128                [::]:22             [::]:*
LISTEN   0100               [::1]:25             [::]:*
2.3.5.3.4 验证登录

3 JumpServer 常见功能

官方文档:

https://docs.jumpserver.org/zh/master/

3.1 登录并初始化配置

3.1.1 首次登录

3.1.1.1 浏览器访问

http:<JumpServerIP>

登录 JumpServer 默认用户: admin 密码: admin

第一次登录要求重置密码

用新密码重新登录

新版

旧版

3.1.1.2 ssh 登录

可以用admin用户和修改过的新密码, 连接jumpserver的ssh端口2222/tcp进行连接访问

注意:新版需要实现资产授权后才能连接登录

3.1.2 修改 admin 用户的密码

3.1.3 配置邮件

测试连接,可以收到邮件

3.2 创建用户和组

JumpServer 支持三种登录用户

系统管理员

  • 普通用户系统审计员

3.2.1 创建用户

填写用户信息,注意: 邮箱地址不能重复

相同方法再创建xiaoming用户

3.2.2 创建组并将用户加入组中

创建development组,并将前面创建的用户加入组中

创建test组,将入用户

查看创建的组

3.2.3 使用新用户登录

首次登录完善个人信息

3.2.4 禁用和启用用户

禁用用户

启用用户

3.2.5 启用用户多因子认证功能

多因子认证Multi-Factor Authentication (MFA) 是一种简单有效的最佳安全实践方法,用户要通过两种以上的认证机制之后,才能得到授权,使用计算机资源

JumpServer 启用 MFA 后,用户登录网站时,系统将要求输入用户名和密码(第一安全要素),然后要求输入来自其 MFA 设备的动态验证码(第二安全要素),双因素的安全认证将为您的账户提供更高的安全保护

3.2.5.1 开启MFA

在用户列表中,对指定用户更新配置

3.2.5.2 绑定手机APP

按下图下载APP并安装

3.2.5.3 重新登录验证

3.2.6 创建系统审计员

系统审计员即查看 录像带的人 (M42期宽宽语录)

使用审计员用户登录

3.3 管理资产

JumpServer 可以管理各种类型的资产

JumpServer中的三种用户

登录用户:

分配给用户用于登录JumpServer时使用

管理用户:

对后端服务器具有管理权限的系统帐号 root或administrator 及sudo ALL权限的用户,用于管理后端服务器

新版中已取消此名称,改名为 系统用户中特权用户

系统用户:

给登录用户使用ssh连接后端服务器时对应的系统用户 ,一般是后端服务器的普通的系统用户帐号

新版中改名为系统用户中普通用户

3.3.1 创建管理用户

管理用户是jumpServer用来管理后端服务器或其它资产的管理员用户,此用户必须对后端服务器有管理权限

管理用户特点:

  • 通常是后端服务器的root或者是具备root权限的超级用户用于推送或者是创建系统用户

  • 用于获取被管理的硬件资产信息

3.3.2 创建资产

创建可以被jumpServer用户访问的后端服务器和其它资产,比如:路由器,交换机等

3.3.2.1 创建资产

创建多个资产

3.3.2.2 创建节点实现资产分类

创建节点将资产分类

3.4 授权管理

3.4.1 创建系统用户(系统用户中普通用户)

系统用户是分配给JumpServer用户,用来让JumpServer用户在连接后端服务器和其它资产,一般不会给管理权限

生产环境中,一般都会利用自动化运维工具提前在后端服务器创建好系统用户,在所有后端服务器统一用户 ID信息,而非在jumpserver中创建

3.4.2 关联使用系统用户的资产

将前面创建的系统用户推送到后端服务器并自动创建在系统用户中添加使用此用户的资产

选择使用此系统用户的主机

测试可连接性

注意:连接性是利用系统用户进行连接的,所以之前必须先推送系统用户后才能测试连接

如果前面系统用户是自动推送,则无需推送系统用户,就可以在后端服务器自动创建用户

在后端服务器验证用户创建成功

[root@ubuntu1804 ~]#id magedu
uid=1001(magedu) gid=1001(magedu) groups=1001(magedu)
[root@centos7 ~]#id magedu
uid=1002(magedu) gid=1002(magedu) groups=1002(magedu)

3.4.3 创建授权规则

通过授权规则, 为JumpServer用户分配可以访问的资产及使用的系统用户

同样再创建授权规则

3.4.4 测试登录访问后端服务器

选中主机后,输入命令,再执行

点右上角的web终端,可以打开终端界面

3.4.5 测试上传和下载文件

可以通过web方式或者通过filezilla等工具直接连接jumpserver的2222端口都可以实现文件的上传下载

3.4.6 ssh连接JumpServer

JumpServer 还支持用户通过ssh连接其2222/tcp端口进行访问连接方式:

ssh -p 2222 user@jumpserver

3.5 数据库授权

注意: JumpServer v2.5 此功能有Bug ,可以选择 V2.4版

3.5.1 在后端服务器安装MySQL并创建数据库和用户

[root@centos8 ~]#hostname -I
10.0.0.200
[root@centos8 ~]#dnf -y install mariadb-server
[root@centos8 ~]#systemctl enable --now mariadb
[root@centos8 ~]#mysql
MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> create user wordpress@'10.0.0.%' identified by '123456';
MariaDB [(none)]> grant all on wordpress.*  to wordpress@'10.0.0.%' ;
MariaDB [(none)]> exit
Bye

3.5.2 创建数据库应用

应用管理--数据库--创建

3.5.3 创建数据库的系统用户

创建针对数据库的专用系统用户

注意: 协议选择mysql

3.5.4 创建数据库授权规则

权限管理--应用授权

3.5.5 测试数据库连接

3.5.5.1 web 方式连接MySQL资产

注意: v2.5.3有 bug,无法连接

3.5.5.2 用ssh连接MySQL资产

3.6 会话管理

会话管理可以实现查看当前在线的会话命令记录、历史会话过去的执行过的命令,也可以强制将用户踢出

3.6.1 查看在线会话

3.6.2 查看历史会话

3.6.2.1 在线回放

3.6.2.2 离线查看录像

可以将历史会话过程下载再播放,但需要下载相关的播放器

注意:JumpServer-v2.19.1版的录像无法打开

https://github.com/jumpserver/VideoPlayer/releases

3.6.3 查看命令历史

3.6.4 终端管理

可以在线监控用户正在进行的操作过程,甚至可以强制中断用户的连接,将其踢出会话

3.7 命令过滤器

使用命令过滤器可以禁止用户执行特定的危险命令,防止误操作或恶意行为

系统用户可以绑定一些命令过滤器,一个过滤器可以定义一些规则当用户使用这个系统用户登录资产, 然后执行一个命令.这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配, 当一个规则匹配到了,如果规则的动作是允许,这个命令会被放行, 如果规则的动作是禁止,命令将会被禁止执行, 否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行

3.7.1 创建命令过滤器

3.7.2 将过滤器绑定系统用户

3.7.3 测试

3.8 资产的批量导出和导入

当需要管理的后端服务器很多时,每台主机手动导入效率很低,可以利用资产的导出导入功能实现批量导入,提高效率

3.8.1 资产的批量导出

3.8.2 批量导入资产

参考上面导出的文件格式,生成导入的文件,再批量导入资产

注意: 删除id列,修改主机名和IP字段,再导入

3.9 网域管理

实际生产环境中混合云使用很常见,但是jumpserver无法直接管理公有云服务器

可以通过JumpServer的网域功能实现混合云服务器的统一管理

网域的管理流程

  • 购买几台云主机,且有一台云主机必须具备公网IP, 此主机充当网关服务器让网关服务器与所有的云主机(包括网关服务器)免密(可选)

  • jumpserver要与网关服务器免密(可选)

  • 创建网域名称

  • 创建网关,指定网关服务器的公网IP,认证指定root和jumpserver的root的私钥文件(或者网关服务器的root密码)

  • 添加一个特权用户(阿里云root): 阿里云网关服务器root用户和其私钥(或者root密码)

  • 添加资产(所有云主机,包括网关服务器),输入云主机的IP,并选择从上面创建网域进行跳转,认证选上面创建的特权用户

  • 授权给用户组管理上面创建的资产

测试完成,不要忘记释放云主机和公网IP资源

3.9.1 购买云主机

购买多台云主机,至少一台主机有公网IP,充当网关服务器

配置ssh 免密钥验证,此步可选

3.9.2 创建网域

3.9.3 创建网关

3.9.4 创建特权用户

3.9.5 添加资产

注意: 需要指定网域

3.9.6 资产授权

3.9.7 测试访问