Featured image of post JumpServer 堡垒机部署实战:资产访问、命令审计与录像回放

JumpServer 堡垒机部署实战:资产访问、命令审计与录像回放

JumpServer v3.10 一键快速安装、Docker 化部署、6 大核心组件(Core/Koko/Lion/Chen/Magnus/Kael)解析、用户/资产/权限模型、Web 终端 SSH/RDP 实操、命令审计与录屏

背景

传统运维痛点:

  1. 10 个运维各有自己的 SSH 私钥,离职交接痛苦
  2. 生产密码分散在 5 个 Excel 表,更新一台机器要改 5 处
  3. 操作无法回溯——出问题不知道谁 rm -rf 了数据库
  4. 越权操作——开发用 root 登录生产,误操作无法控制

堡垒机(Bastion Host) 解决以上所有问题:

  • 统一入口:所有 SSH/RDP/Kubernetes 连接都从堡垒机走
  • 凭证托管:密码/密钥存堡垒机,运维不直接知道生产密码
  • 细粒度授权:A 运维只能访问 Web 机器,B 运维只能看 MySQL
  • 全程录屏 + 命令审计:出问题能回放、追责

JumpServerjumpserver.org)是国产开源堡垒机的事实标准

  • 2014 年由 FIT2CLOUD 发起
  • v3.x 用 Python/Django + Vue 重写
  • 支持 SSH/RDP/Telnet/VNC/Kubernetes/MySQL/Redis/Git 等 20+ 协议
  • 企业版(付费)有工单、资产自动发现、HA 等高级功能

适用场景

  • 中小企业统一生产入口
  • 多云/混合云资产的集中访问
  • 等保、ISO 27001 等合规审计
  • 外包/临时人员的权限管控

前置知识

  • Linux + Docker 基础
  • SSH/RDP 协议概念
  • RBAC 权限模型

一、核心架构与组件

JumpServer v3.x 是典型的多组件微服务架构:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
                            ┌──────────────┐
                            │  Web 前端     │ ← Vue SPA
                            │  (jms_web)    │     :80
                            └──────┬───────┘
                            ┌──────▼───────┐
                            │  Core API    │ ← Django + DRF
                            │  (jms_core)   │     :8080
                            └──────┬───────┘
        ┌──────────────┬───────────┼───────────┬──────────────┐
        │              │           │           │              │
   ┌────▼────┐   ┌─────▼────┐ ┌────▼────┐ ┌────▼─────┐  ┌────▼────┐
   │  Koko   │   │   Lion   │ │  Chen   │ │  Magnus  │  │  Kael   │
   │ SSH代理 │   │ DB代理   │ │RDP/VNC  │ │远程应用  │  │ 网关    │
   │ :2222   │   │ :33060   │ │:33070   │ │ 协议转换  │  │         │
   └─────────┘   └──────────┘ └─────────┘ └──────────┘  └─────────┘
   ┌────▼────┐ ┌─────────┐
   │  MySQL  │ │  Redis  │
   │ :3306   │ │ :6379   │
   └─────────┘ └─────────┘
组件作用端口
Core核心 API、用户/资产/权限管理:8080
KokoSSH 协议代理(取代旧 Lina):2222
LionMySQL/PostgreSQL/Redis/MongoDB 数据库代理:33060
ChenRDP/VNC 协议代理:33070
Magnus远程应用(RemoteApp)协议代理
KaelKubernetes API 代理
Web静态资源服务:80
MySQL元数据:3306
Redis缓存、Celery broker:6379

二、快速安装(一键脚本)

官方推荐用 quick_start.sh 集成安装:

1
curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash

安装过程会交互询问:

  • 是否配置 IPv6(默认 n
  • 自定义持久化目录(默认 /data/jumpserver,建议改到大盘)
  • 是否使用外部 MySQL/Redis(先用内置的,迁集群时再分
  • 是否配置外部访问端口(默认即可

安装完成后输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
>>> 加载 Docker 镜像
[jumpserver/core-ce:v3.10.9] pulling
[jumpserver/chen:v3.10.9] pulling
[jumpserver/redis:6.2] pulling
[jumpserver/mariadb:10.6] pulling
[jumpserver/kael:v3.10.9] pulling
[jumpserver/lion:v3.10.9] pulling
[jumpserver/koko:v3.10.9] pulling
[jumpserver/magnus:v3.10.9] pulling
[jumpserver/web:v3.10.9] pulling

>>> 安装配置 JumpServer
SECRETE_KEY:     8438fa2d36040662b3053b3d388d9813dacd193bc1b66066
BOOTSTRAP_TOKEN: 71NyJcmsMJTBYF4vpYL6z8i1

⚠️ SECRETE_KEYBOOTSTRAP_TOKEN 一定保存好!多节点部署时所有节点必须用同样的两个值,否则节点无法加入集群。


三、初始化与登录

3.1 Web 访问

1
http://<jumpserver-ip>/

默认账号:

  • 用户名:admin
  • 密码:ChangeMe首次登录强制修改

3.2 接受 LICENSE

JumpServer 是 GPLv3 开源 + 商业 Enterprise 双协议。首次登录需要:

  1. 接受 GPLv3 协议
  2. 修改 admin 密码(至少 8 位,字母+数字+特殊字符)
  3. 设置 MFA(强烈建议开启 TOTP 或短信)

3.3 配置邮件 / 短信 / LDAP

系统设置 → 邮件设置

1
2
3
4
5
6
SMTP 服务器:smtp.exmail.qq.com
SMTP 端口:465
SSL:启用
账号:noreply@example.com
密码:<授权码>
发件人:JumpServer <noreply@example.com>

LDAP 接入(对接公司 AD):

1
2
3
4
服务器:ldap://ldap.internal.example.com
BASE DN:DC=example,DC=com
管理员 DN:CN=jumpserver,OU=Service,DC=example,DC=com
密码:<LDAP 服务账号密码>

SSO/OIDC 接入(对接 Keycloak、Authing):

1
2
系统设置 → 认证设置 → OIDC
Client ID / Secret / Discovery URL

四、资产管理

4.1 创建资产树

按业务/环境/项目维度组织:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
├─ 研发中心
│  ├─ 开发环境
│  │  ├─ Web 集群
│  │  └─ 数据库集群
│  └─ 测试环境
├─ 运维部
│  ├─ 生产环境
│  │  ├─ 核心交易
│  │  ├─ 物流系统
│  │  └─ 数据仓库
│  └─ 灾备环境

4.2 添加资产(手动)

资产管理 → 资产列表 → 创建

字段填写示例
主机名web-prod-01
IP10.8.33.21内网 IP
协议组Linux / WindowsLinux 走 SSH
端口22
账号root平台账号(用 SSH 密钥)
平台Linux / CentOS自动探测 OS 类型
节点生产环境/Web 集群资产树位置

4.3 SSH 密钥推送

资产管理 → 平台账号 → 创建

1
2
3
4
名称:root-sshkey
用户名:root
认证方式:SSH 密钥
私钥:粘贴 id_rsa 内容

JumpServer 首登会自动用密钥推送(前提是目标机器 root authorized_keys 已经加了 JumpServer 公钥),或者管理员手工 ssh-copy-id。

4.4 资产导入(Excel 批量)

资产管理 → 资产列表 → 导入 → 下载模板 → 填好上传。

适合几十/几百台机器的批量初始化。

4.5 自动发现

企业版支持:通过 Ansible/SaltStack 自动发现网段内的资产并入库。


五、用户与权限

5.1 三层权限模型

JumpServer 的权限抽象是教科书级的:

1
2
3
4
5
用户(User)
  ↓ 角色(Role)
    ↓ 资产(Asset)
      ↓ 账号(Account)
        ↓ 动作(Action)
  • 用户:运维、开发、审计员、DBA
  • 角色:研发组、运维组、SA 组
  • 资产:前面资产树里的机器
  • 账号:root、appuser、mysql
  • 动作:连接、上传、下载、删除

5.2 创建用户

用户管理 → 用户列表 → 创建

1
2
3
4
5
用户名:zhangsan
姓名:张三
邮箱:zhangsan@example.com
角色:研发组
MFA:TOTP

5.3 创建授权规则

权限管理 → 资产授权 → 创建

1
2
3
4
5
6
名称:开发组授权 Web 集群
用户:研发组
资产:研发中心/开发环境/Web 集群(用节点选择)
账号:root(限制 root)
动作:所有
生效时间:2024-01-01 ~ 2025-12-31

用户登录后只能看到授权内的资产


六、Web 终端实操

6.1 SSH 终端

工作台 → Web 终端 → SSH

  • 选资产(如 web-prod-01)
  • 选账号(如 root)
  • 进入 Web Terminal,全程录屏/data/jumpserver/core/data/media/

支持的快捷键:

  • Ctrl + Insert 复制
  • Shift + Insert 粘贴
  • Ctrl + L 清屏

6.2 RDP 远程桌面

工作台 → 远程桌面 → RDP

  • 选资产
  • 选账号(Windows 管理员)
  • 浏览器内直接打开远程桌面(基于 Apache Guacamole),无需装 mstsc
  • 录屏同上

6.3 数据库

工作台 → 数据库 → MySQL

  • 选资产
  • 选账号(如 root)
  • 内置 phpMyAdmin / pgAdmin 风格查询界面
  • SQL 操作全部审计(可回放)

6.4 Kubernetes

企业版支持:通过 Kael 代理 kubectl/dashboard。


七、审计与回放

7.1 在线会话监控

审计台 → 在线会话

管理员可以实时看任意用户的操作(“老大看着小弟干活”),必要时强制断开

7.2 命令审计

审计台 → 命令记录

每条命令都记录:

  • 谁(用户)
  • 在哪台机器(资产)
  • 用什么账号
  • 执行的命令
  • 完整回放视频

7.3 文件传输审计

审计台 → 上传/下载

通过 JumpServer 上下传的文件全部记录,可下载下来审计。

7.4 录屏回放

审计台 → 会话回放

每条会话一个 .cast 文件(asciinema 格式),可在线播放、跳转到任意时间点。

7.5 危险命令拦截

系统设置 → 安全设置 → 命令过滤

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
危险命令(拦截):
rm -rf /
dd if=/dev/zero of=/dev/sda
mkfs
fdisk
shutdown
reboot
init 0
halt

告警命令(记录+告警):
sudo
chmod 777
cat /etc/passwd
cat /etc/shadow
vi /etc/sudoers

用户执行危险命令时直接拒绝并记录。


八、高可用与生产部署

8.1 外部 MySQL + Redis

生产用内置 MariaDB/Redis(容器化,单点)。

/opt/jumpserver/config/config.txt

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# MySQL
DB_HOST=mysql.internal.example.com
DB_PORT=3306
DB_USER=jumpserver
DB_PASSWORD=your_db_password
DB_NAME=jumpserver

# Redis
REDIS_HOST=redis.internal.example.com
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password

8.2 多节点集群

JumpServer 3.x 原生支持节点水平扩展

1
2
3
4
5
6
7
8
9
              [HAProxy / Nginx]
   ┌────────────┬─────┴─────┬────────────┐
   │            │           │            │
[Node 1]    [Node 2]    [Node 3]    [Node N]
   │            │           │            │
   └────────────┴─────┬─────┴────────────┘
              [外部 MySQL + Redis]

每个 Node 都跑完整组件(Core/Koko/Lion/Chen/Magnus/Kael),用 Nginx 分流到不同组件端口。

8.3 Koko SSH 端口高可用

Koko 的 2222 端口是 SSH 入口,必须用 HAProxy 或 LVS 漂移。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# haproxy.cfg
frontend jumpserver-ssh
    bind *:2222
    mode tcp
    default_backend jumpserver-ssh-nodes

backend jumpserver-ssh-nodes
    mode tcp
    balance roundrobin
    server node1 10.8.33.21:2222 check
    server node2 10.8.33.22:2222 check
    server node3 10.8.33.23:2222 check

九、升级与备份

9.1 升级

1
2
cd /opt/jumpserver-installer-v3.x.x
./jmsctl.sh upgrade

升级前务必备份数据库。

9.2 备份

1
2
3
4
5
6
7
8
# 备份数据库
mysqldump -h <mysql-host> -u jumpserver -p jumpserver > jumpserver_$(date +%F).sql

# 备份持久化目录
tar -czf jumpserver_data_$(date +%F).tar.gz /data/jumpserver

# 备份配置
tar -czf jumpserver_config_$(date +%F).tar.gz /opt/jumpserver/config

9.3 卸载

1
2
3
4
cd /opt/jumpserver-installer-v3.x.x
./jmsctl.sh uninstall
rm -rf /opt/jumpserver*
rm -rf /data/jumpserver

十、常见坑

10.1 Koko 连接 SSH 慢

原因:Core 没配对外访问 IP,Koko 找不到 Core。

对策

1
2
# /opt/jumpserver/config/config.txt
CORE_HOST=http://<jumpserver-public-ip>:8080

10.2 录屏文件过大

对策

  • 录屏保留期 30-90 天(系统设置 → 清理)
  • S3/OSS 归档老录屏

10.3 数据库连接拒绝

1
2
3
# 看 lion 容器日志
docker logs jms_lion
# 常见:MySQL 没授权 jumpserver 用户

10.4 RDP 连不上 Windows

检查

  1. Windows 开了远程桌面(系统属性 → 远程)
  2. 防火墙开了 3389
  3. JumpServer 资产账号是 Administrator 组成员

小结

JumpServer 是国产堡垒机的事实标准

  1. 一键部署curl | bash 5 分钟起一个生产可用堡垒机
  2. 6 大组件(Core/Koko/Lion/Chen/Magnus/Kael)覆盖 SSH/RDP/DB/K8s
  3. 三层权限(用户/资产/动作)细粒度到命令级
  4. 全程录屏 + 命令审计,等保合规利器

生产部署三原则

  • 外部 MySQL/Redis,别用容器内置的
  • 多节点 Koko HA,避免 SSH 入口单点
  • 危险命令拦截,配白名单/黑名单

下一步

  • 企业版(付费)的工单、资产自动发现、HA
  • 自建数据库代理 + 跳板机的"轻量堡垒机"(Teleport、Tailscale SSH)
  • 与 SOC/SIEM 对接,命令审计入事件流

2024+ 视角:本文写于 2024-05,半年后 JumpServer v4 + AI 助手的"新王"

本文写于 2024-05-14——半年后(2024 年底到 2025 年中)JumpServer 生态又有几个大变化:

一、JumpServer v4.0+(2024-Q3 发布)

  • v4.0 重构:把 Core API、Worker、Client 拆得更彻底——支持 K8s 原生部署。
  • 新组件
    • Client CLIjmsctl):命令行管理
    • Celery 任务队列 拆分到独立 worker(支持横向扩展
    • SAML 2.0 / OIDC 增强(对接 Keycloak / Authing / Azure AD)
  • 数据库支持PostgreSQL 14+ / MySQL 8.0+ 强制要求。
1
2
3
4
# 2024-05 装的 v3.10.9
# 2024 年底 v4.0 升级
cd /opt/jumpserver-installer-v4.0.0
./jmsctl.sh upgrade

二、AI 助手的"零信任 SSH"

  • 2024 LLM 革命让"AI 运维助手"成为新风口:
  • JumpServer 4.0 集成 AI Command Helper(基于 LLM 的命令辅助):
    • 自然语言转 shell 命令(“查昨天哪个用户改了 nginx 配置” → 自动生成查询命令)
    • 危险命令的"软拦截 + AI 解释"(拦截 + 推荐安全写法)
  • OpenAI Function Calling / MCP 协议:让 LLM 直接调用 JumpServer API 做运维。

三、Teleport 的"现代竞争"

  • Teleportgravitational/teleport,2024 是 v14+):
    • 基于 RBAC + 证书的零信任 SSH
    • 审计全留痕 + 实时拦截
    • 支持 K8s / Database / Web / Desktop 一站式
    • 开源版也够用(Enterprise 版加 SSO、Device Trust)
1
2
# 装 Teleport
curl https://goteleport.com/static/install.sh | bash -s 14.0.0
  • 2024 市场份额:JumpServer 仍是国内事实标准,Teleport 在外企 / 出海项目占主导。

四、Tailscale SSH + 零信任的"更轻方案"

  • 2024 Tailscale SSH(基于 Tailscale WireGuard VPN)让"SSH 跳板机"变得不再必要
1
2
3
4
5
# Tailscale 在每台机器
tailscale up
# 直接 SSH 任意机器(只要装了 Tailscale)
ssh user@node-name
# Tailscale 自动用 ACL 限制谁能连哪台
  • 优势
    • 不用暴露 SSH 22 到公网
    • 不用维护 JumpServer
    • 零信任(每次 SSH 都要鉴权)
  • 劣势
    • 不能录屏(这是 JumpServer 强项)
    • 不能托管 SSH 密钥(需要靠 Tailscale ACL 鉴权)

五、K8s 时代的堡垒机新形态

  • 2024 K8s 场景:“堡垒机"概念淡化,Service Mesh + OPA 接管:
    • Teleport K8s 插件:直接代理 kubectl exec
    • Cloudflare Tunnel + Access:通过 Zero Trust 鉴权
    • Teleport / Boundary / Pomerium 都是"现代堡垒机”
  • JumpServer 也在跟进:2024 起支持 Kubernetes 资产(通过 Kael 组件代理 kubectl)。

六、数据库代理 + 凭证托管的"一体化"

2024 那篇提到 JumpServer 6 大组件。2024-05 视角下

  • Lion 组件(DB 代理)已支持原生 SQL 审计(不只是录屏)。
  • 凭证HashiCorp Vault 集成(2024 v3.10+ 支持)。
  • Redis 7+ 兼容(之前 6.x 时代有 bug)。
  • MongoDB 5.0+ 兼容
1
2
# 集成 HashiCorp Vault
# 系统设置 → 凭证 Vault → Vault 地址 + Token

七、X-Powered-By 与合规

  • 2024 等保 2.0(中国信息安全等级保护 2.0)已强制要求:
    • 操作录屏(✅ JumpServer 满足)
    • 命令审计(✅)
    • 会话保存 6 个月(✅)
    • 强 MFA(✅ TOTP/SMS/Email)
    • 国密算法(SM2/SM3/SM4)—— JumpServer 4.0+ 支持
  • 2024 SOC 2 / ISO 27001 国际合规(外企项目):
    • Teleport 在国际合规更全面
    • JumpServer 国内合规更完整

八、AI 时代的"AI 运维代理"萌芽

  • 2024 OpenAI / Anthropic 的 LLM 已能直接执行 SSH 命令:
  • 2024-08 起出现的 Devin / AutoGPT / Claude Code 等 AI Agent,能:
    • 自动 SSH 进服务器排查问题
    • 自动写代码、自动部署
  • 未来:JumpServer 可能要加 “AI 命令审核”——AI 生成命令先过安全模型检查,再执行。

源文档os/linux/第三方tools/safe/jumpserver/jumpserver.md(46K 完整安装日志 + 配置实例)

使用 Hugo 构建
主题 StackJimmy 设计