背景
传统运维痛点:
- 10 个运维各有自己的 SSH 私钥,离职交接痛苦
- 生产密码分散在 5 个 Excel 表,更新一台机器要改 5 处
- 操作无法回溯——出问题不知道谁 rm -rf 了数据库
- 越权操作——开发用 root 登录生产,误操作无法控制
堡垒机(Bastion Host) 解决以上所有问题:
- 统一入口:所有 SSH/RDP/Kubernetes 连接都从堡垒机走
- 凭证托管:密码/密钥存堡垒机,运维不直接知道生产密码
- 细粒度授权:A 运维只能访问 Web 机器,B 运维只能看 MySQL
- 全程录屏 + 命令审计:出问题能回放、追责
JumpServer(jumpserver.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 是典型的多组件微服务架构:
| |
| 组件 | 作用 | 端口 |
|---|---|---|
| Core | 核心 API、用户/资产/权限管理 | :8080 |
| Koko | SSH 协议代理(取代旧 Lina) | :2222 |
| Lion | MySQL/PostgreSQL/Redis/MongoDB 数据库代理 | :33060 |
| Chen | RDP/VNC 协议代理 | :33070 |
| Magnus | 远程应用(RemoteApp)协议代理 | — |
| Kael | Kubernetes API 代理 | — |
| Web | 静态资源服务 | :80 |
| MySQL | 元数据 | :3306 |
| Redis | 缓存、Celery broker | :6379 |
二、快速安装(一键脚本)
官方推荐用 quick_start.sh 集成安装:
| |
安装过程会交互询问:
- 是否配置 IPv6(默认 n)
- 自定义持久化目录(默认
/data/jumpserver,建议改到大盘) - 是否使用外部 MySQL/Redis(先用内置的,迁集群时再分)
- 是否配置外部访问端口(默认即可)
安装完成后输出:
| |
⚠️
SECRETE_KEY和BOOTSTRAP_TOKEN一定保存好!多节点部署时所有节点必须用同样的两个值,否则节点无法加入集群。
三、初始化与登录
3.1 Web 访问
| |
默认账号:
- 用户名:
admin - 密码:
ChangeMe(首次登录强制修改)
3.2 接受 LICENSE
JumpServer 是 GPLv3 开源 + 商业 Enterprise 双协议。首次登录需要:
- 接受 GPLv3 协议
- 修改 admin 密码(至少 8 位,字母+数字+特殊字符)
- 设置 MFA(强烈建议开启 TOTP 或短信)
3.3 配置邮件 / 短信 / LDAP
系统设置 → 邮件设置:
| |
LDAP 接入(对接公司 AD):
| |
SSO/OIDC 接入(对接 Keycloak、Authing):
| |
四、资产管理
4.1 创建资产树
按业务/环境/项目维度组织:
| |
4.2 添加资产(手动)
资产管理 → 资产列表 → 创建:
| 字段 | 填写 | 示例 |
|---|---|---|
| 主机名 | web-prod-01 | — |
| IP | 10.8.33.21 | 内网 IP |
| 协议组 | Linux / Windows | Linux 走 SSH |
| 端口 | 22 | — |
| 账号 | root | 平台账号(用 SSH 密钥) |
| 平台 | Linux / CentOS | 自动探测 OS 类型 |
| 节点 | 生产环境/Web 集群 | 资产树位置 |
4.3 SSH 密钥推送
资产管理 → 平台账号 → 创建:
| |
JumpServer 首登会自动用密钥推送(前提是目标机器 root authorized_keys 已经加了 JumpServer 公钥),或者管理员手工 ssh-copy-id。
4.4 资产导入(Excel 批量)
资产管理 → 资产列表 → 导入 → 下载模板 → 填好上传。
适合几十/几百台机器的批量初始化。
4.5 自动发现
企业版支持:通过 Ansible/SaltStack 自动发现网段内的资产并入库。
五、用户与权限
5.1 三层权限模型
JumpServer 的权限抽象是教科书级的:
| |
- 用户:运维、开发、审计员、DBA
- 角色:研发组、运维组、SA 组
- 资产:前面资产树里的机器
- 账号:root、appuser、mysql
- 动作:连接、上传、下载、删除
5.2 创建用户
用户管理 → 用户列表 → 创建:
| |
5.3 创建授权规则
权限管理 → 资产授权 → 创建:
| |
用户登录后只能看到授权内的资产。
六、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 危险命令拦截
系统设置 → 安全设置 → 命令过滤:
| |
用户执行危险命令时直接拒绝并记录。
八、高可用与生产部署
8.1 外部 MySQL + Redis
生产不用内置 MariaDB/Redis(容器化,单点)。
/opt/jumpserver/config/config.txt:
| |
8.2 多节点集群
JumpServer 3.x 原生支持节点水平扩展:
| |
每个 Node 都跑完整组件(Core/Koko/Lion/Chen/Magnus/Kael),用 Nginx 分流到不同组件端口。
8.3 Koko SSH 端口高可用
Koko 的 2222 端口是 SSH 入口,必须用 HAProxy 或 LVS 漂移。
| |
九、升级与备份
9.1 升级
| |
升级前务必备份数据库。
9.2 备份
| |
9.3 卸载
| |
十、常见坑
10.1 Koko 连接 SSH 慢
原因:Core 没配对外访问 IP,Koko 找不到 Core。
对策:
| |
10.2 录屏文件过大
对策:
- 录屏保留期 30-90 天(系统设置 → 清理)
- S3/OSS 归档老录屏
10.3 数据库连接拒绝
| |
10.4 RDP 连不上 Windows
检查:
- Windows 开了远程桌面(系统属性 → 远程)
- 防火墙开了 3389
- JumpServer 资产账号是 Administrator 组成员
小结
JumpServer 是国产堡垒机的事实标准:
- 一键部署:
curl | bash5 分钟起一个生产可用堡垒机 - 6 大组件(Core/Koko/Lion/Chen/Magnus/Kael)覆盖 SSH/RDP/DB/K8s
- 三层权限(用户/资产/动作)细粒度到命令级
- 全程录屏 + 命令审计,等保合规利器
生产部署三原则:
- 外部 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 CLI(
jmsctl):命令行管理 - Celery 任务队列 拆分到独立 worker(支持横向扩展)
- SAML 2.0 / OIDC 增强(对接 Keycloak / Authing / Azure AD)
- Client CLI(
- 数据库支持:PostgreSQL 14+ / MySQL 8.0+ 强制要求。
| |
二、AI 助手的"零信任 SSH"
- 2024 LLM 革命让"AI 运维助手"成为新风口:
- JumpServer 4.0 集成 AI Command Helper(基于 LLM 的命令辅助):
- 自然语言转 shell 命令(“查昨天哪个用户改了 nginx 配置” → 自动生成查询命令)
- 危险命令的"软拦截 + AI 解释"(拦截 + 推荐安全写法)
- OpenAI Function Calling / MCP 协议:让 LLM 直接调用 JumpServer API 做运维。
三、Teleport 的"现代竞争"
- Teleport(gravitational/teleport,2024 是 v14+):
- 基于 RBAC + 证书的零信任 SSH
- 审计全留痕 + 实时拦截
- 支持 K8s / Database / Web / Desktop 一站式
- 开源版也够用(Enterprise 版加 SSO、Device Trust)
| |
- 2024 市场份额:JumpServer 仍是国内事实标准,Teleport 在外企 / 出海项目占主导。
四、Tailscale SSH + 零信任的"更轻方案"
- 2024 Tailscale SSH(基于 Tailscale WireGuard VPN)让"SSH 跳板机"变得不再必要:
| |
- 优势:
- 不用暴露 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 都是"现代堡垒机”
- Teleport K8s 插件:直接代理
- 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+ 兼容。
| |
七、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 完整安装日志 + 配置实例)
