15分钟零成本搭建企业级堡垒机:JumpServer从部署到实战全指南
你是否还在为服务器权限管理混乱而头疼?运维团队共享账号导致安全审计无从追溯?远程运维操作缺乏有效监控?作为广受欢迎的开源堡垒机(Bastion Host)解决方案,JumpServer提供了企业级的特权访问管理(Privileged Access Management, PAM)能力,却常因"部署复杂"让初学者望而却步。本文将带你通过3种部署方式(一键安装/容器化/Docker Compose)快速搭建堡垒机环境,并完成从资产管理到权限分配的全流程实战,让你在15分钟内拥有专业级运维安全管控平台。
读完本文你将掌握:
- 3种部署方式的环境准备与执行步骤
- 初始化配置与安全加固最佳实践
- 资产录入与用户权限管理完整流程
- 远程连接(SSH/RDP/K8s)实战操作
- 审计日志与自动化运维配置技巧
一、认识JumpServer:现代运维安全的核心屏障
1.1 什么是堡垒机?
堡垒机(Bastion Host)是一种位于网络边界的专用服务器,所有对内部网络的特权访问都必须经过它,实现"集中管控、全程记录、精细审计"的安全目标。在DevOps与云原生时代,堡垒机已成为满足等保2.0、GDPR等合规要求的必备基础设施。
1.2 JumpServer核心优势
作为国内首个开源堡垒机项目,JumpServer采用Python/Django开发,具备以下特性:
pie
title JumpServer功能覆盖率
"SSH/RDP连接" : 30
"权限管理" : 25
"审计录像" : 20
"自动化运维" : 15
"第三方集成" : 10
- 全协议支持:覆盖SSH、RDP、VNC、Telnet、数据库(MySQL/PostgreSQL)、Kubernetes等10+种协议
- Web化操作:无需安装客户端,浏览器即可完成所有运维操作
- 细粒度权限:基于最小权限原则的RBAC权限模型,支持资产授权与命令过滤
- 完善审计:操作录像、命令记录、文件传输日志全方位可追溯
- 高扩展性:支持LDAP/AD集成、MFA双因素认证、API对接等企业级需求
1.3 架构概览
JumpServer采用微服务架构设计,主要由以下组件构成:
flowchart LR
Client[用户浏览器] --> Lina[Web UI]
Client --> Luna[Web终端]
Lina --> Core[核心服务]
Luna --> KoKo[字符协议连接器]
Luna --> Lion[图形协议连接器]
Core --> DB[(数据库)]
Core --> Redis[(缓存)]
KoKo --> Assets[服务器/设备]
Lion --> Windows[Windows资产]
Core --> Celery[任务队列]
| 组件 | 功能描述 | 技术栈 |
|---|---|---|
| Lina | Web管理界面 | Vue.js |
| Luna | Web终端前端 | React |
| KoKo | SSH/RDP协议处理 | Go |
| Lion | 图形化连接代理 | C++ |
| Core | 核心业务逻辑 | Python/Django |
二、环境准备:硬件与系统要求
2.1 最低配置要求
| 环境 | CPU | 内存 | 硬盘 | 操作系统 |
|---|---|---|---|---|
| 测试环境 | 2核 | 4GB | 20GB SSD | CentOS 7/8, Ubuntu 20.04+ |
| 生产环境 | 4核 | 8GB | 100GB SSD | CentOS 7/8, Ubuntu 20.04+ |
2.2 网络端口规划
| 端口 | 用途 | 安全建议 |
|---|---|---|
| 80/tcp | HTTP访问 | 生产环境建议关闭,仅用于重定向到443 |
| 443/tcp | HTTPS访问 | 必须开放,建议配置SSL证书 |
| 2222/tcp | SSH协议转发 | 可选,用于KoKo组件 |
| 3389/tcp | RDP协议转发 | 可选,用于Lion组件 |
2.3 依赖检查
在开始部署前,执行以下命令检查系统环境:
# 检查操作系统版本
cat /etc/os-release
# 检查Python版本 (要求3.8+)
python3 --version || python --version
# 检查Docker是否安装 (容器化部署需要)
docker --version
docker-compose --version
三、三种部署方式对比与实战
3.1 一键安装(推荐新手)
JumpServer提供了自动化安装脚本,适用于CentOS 7/8、Ubuntu 20.04/22.04系统:
# 获取最新安装脚本
curl -sSL https://gitcode.com/feizhiyun/jumpserver/raw/dev/script/quick_start.sh -o quick_start.sh
# 执行安装 (需要root权限)
sudo bash quick_start.sh
# 安装过程中会提示设置管理员密码,建议设置复杂度高的密码
# 如: Jumpserver@2025
安装成功后,脚本会输出访问地址和默认 credentials:
- Web访问地址: http://服务器IP:80
- 用户名: admin
- 默认密码: ChangeMe (首次登录必须修改)
⚠️ 安全提示:生产环境必须修改默认密码,并通过
jmsctl set ssl配置HTTPS证书
3.2 Docker容器化部署
对于熟悉Docker的用户,容器化部署更便于环境隔离和版本管理:
# 克隆仓库
git clone https://gitcode.com/feizhiyun/jumpserver.git
cd jumpserver
# 生成配置文件
cp config_example.yml config.yml
vi config.yml # 修改必要配置,如SECRET_KEY、BOOTSTRAP_TOKEN等
# 启动容器
docker-compose -f docker-compose.yml up -d
# 查看容器状态
docker-compose ps
# 初始化管理员密码
docker-compose exec core ./jms core change-password admin
3.3 手动部署(适合定制化需求)
手动部署需要依次安装依赖、配置数据库、启动各组件,适合有特殊需求的场景:
# 1. 安装系统依赖
sudo apt update && sudo apt install -y python3 python3-pip mysql-server redis-server
# 2. 创建数据库
mysql -u root -p
CREATE DATABASE jumpserver DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON jumpserver.* TO 'jumpserver'@'localhost' IDENTIFIED BY 'your_strong_password';
FLUSH PRIVILEGES;
EXIT;
# 3. 安装Python依赖
pip3 install poetry
poetry install --no-dev
# 4. 配置环境变量
export SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`
export BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`
export DB_PASSWORD=your_strong_password
# 5. 数据库迁移
poetry run python manage.py migrate
# 6. 启动服务
poetry run python manage.py runserver 0.0.0.0:8080
四、初始化配置与安全加固
4.1 首次登录与基础设置
- 使用浏览器访问JumpServer地址,输入默认账号密码登录
- 系统强制要求修改默认密码,建议遵循"大小写字母+数字+特殊符号"原则
- 进入【系统设置】→【基本设置】,配置企业信息和邮件服务器
4.2 安全加固清单
| 安全项 | 配置方法 | 重要性 |
|---|---|---|
| 启用MFA双因素认证 | 【用户中心】→【个人设置】→【安全设置】 | ⭐⭐⭐⭐⭐ |
| 配置IP访问限制 | 【系统设置】→【安全设置】→【IP访问控制】 | ⭐⭐⭐⭐ |
| 设置会话超时时间 | 【系统设置】→【安全设置】→【会话超时】设为30分钟 | ⭐⭐⭐ |
| 开启操作水印 | 【系统设置】→【界面设置】→【水印设置】 | ⭐⭐⭐ |
| 配置日志审计策略 | 【系统设置】→【审计设置】→ 启用所有审计项 | ⭐⭐⭐⭐ |
4.3 邮件告警配置
通过邮件服务器配置,可实时接收安全事件通知:
sequenceDiagram
participant Admin
participant JumpServer
participant SMTP Server
participant User
Admin->>JumpServer: 配置SMTP服务器
JumpServer->>SMTP Server: 测试连接
SMTP Server-->>JumpServer: 连接成功
JumpServer->>User: 发送登录告警邮件
JumpServer->>User: 发送权限变更通知
配置示例(以腾讯企业邮为例):
- SMTP服务器: smtp.exmail.qq.com
- 端口: 465 (SSL)
- 用户名: jumpserver@yourdomain.com
- 密码: 邮箱授权码
五、核心功能实战
5.1 资产管理
资产管理是堡垒机的基础,支持添加服务器、网络设备、数据库等多种资产类型:
-
添加资产:
- 进入【资产管理】→【资产列表】→【创建资产】
- 填写资产信息:
- 资产名称:web-server-01
- 资产类型:服务器
- IP地址:192.168.1.100
- 操作系统:Linux
- 协议组:SSH (22端口)
-
创建管理用户: 管理用户是JumpServer用来登录资产的账号,建议使用具有sudo权限的账号:
- 进入【资产管理】→【管理用户】→【创建管理用户】
- 账号名称:jumpserver-manager
- 用户名:root
- 认证方式:密码 / SSH密钥
- 密码:资产root用户密码
-
创建资产节点: 节点用于资产分类管理,支持树形结构:
生产环境 ├── Web服务器组 │ ├── web-server-01 │ └── web-server-02 ├── 数据库组 │ └── db-server-01 └── 应用服务器组 └── app-server-01
5.2 用户与权限管理
JumpServer采用RBAC(基于角色的访问控制)模型,实现精细化权限管理:
-
创建用户组:
- 进入【用户管理】→【用户组】→【创建用户组】
- 名称:运维组
- 描述:负责日常服务器维护的团队
-
创建普通用户:
- 进入【用户管理】→【用户列表】→【创建用户】
- 基本信息:姓名、用户名、邮箱、手机号
- 所属用户组:运维组
- 认证方式:本地认证 / LDAP (企业可集成AD域)
-
创建权限规则: 权限规则定义了用户组对哪些资产拥有访问权限:
- 进入【权限管理】→【权限列表】→【创建权限】
- 名称:Web服务器访问权限
- 用户组:运维组
- 资产节点:Web服务器组
- 系统用户:web-operator (后续创建)
- 权限有效期:永久 / 自定义时间段
-
创建系统用户: 系统用户是 JumpServer 用来登录资产的账号,与管理用户的区别是系统用户是资产上的普通账号:
- 进入【资产管理】→【系统用户】→【创建系统用户】
- 名称:web-operator
- 用户名:operator
- 认证方式:自动生成密钥 (推荐)
- 特权提升:允许sudo (可限制命令白名单)
5.3 远程连接实战
5.3.1 SSH连接Linux服务器
- 登录JumpServer Web控制台
- 进入【Web终端】→【资产列表】
- 找到目标资产,点击右侧【连接】按钮
- 在弹出的Web终端中执行操作,所有命令会被实时记录
5.3.2 RDP连接Windows服务器
- 进入【Web终端】→【资产列表】
- 找到Windows资产,点击【连接】→【RDP】
- 系统会自动下载RDP文件或在浏览器中打开Web RDP客户端
- 输入用户名密码即可登录(如已配置单点登录则无需重复认证)
5.3.3 Kubernetes集群访问
JumpServer支持通过Web控制台直接访问Kubernetes集群:
-
添加K8s资产:
- 资产类型:Kubernetes
- API地址:https://k8s-api-server:6443
- 证书认证:上传kubeconfig文件
-
连接K8s集群:
- 进入【Web终端】→【Kubernetes】
- 选择集群和命名空间
- 使用Web终端执行kubectl命令
5.4 审计与报表
JumpServer提供全面的审计功能,满足合规审计需求:
-
会话管理:
- 进入【审计管理】→【会话管理】
- 可查看所有活跃会话和历史会话
- 支持按用户、资产、时间段筛选
- 点击会话记录可回放操作录像
-
命令审计:
- 进入【审计管理】→【命令记录】
- 查看所有用户执行的命令
- 支持危险命令标记(如rm -rf、reboot等)
- 可导出Excel报表
-
文件传输审计:
- 进入【审计管理】→【文件传输】
- 查看所有上传/下载的文件记录
- 包含文件名、大小、时间戳等信息
六、高级应用配置
6.1 自动化运维
JumpServer支持通过作业中心实现自动化运维:
-
创建命令模板:
- 进入【作业中心】→【命令模板】→【创建】
- 名称:查看磁盘使用率
- 命令内容:df -h
- 描述:检查服务器磁盘使用情况
-
创建批量作业:
- 进入【作业中心】→【作业列表】→【创建作业】
- 选择执行目标资产
- 选择命令模板或输入自定义命令
- 设置执行方式:立即执行 / 定时执行
-
查看作业结果:
- 在作业详情页查看执行结果
- 支持导出执行报告
6.2 API集成
JumpServer提供RESTful API,可与CMDB、工单系统等第三方系统集成:
API认证示例:
import requests
BASE_URL = "http://jumpserver-ip/api/v1"
ACCESS_KEY = "your-access-key"
SECRET_KEY = "your-secret-key"
# 获取认证Token
response = requests.post(
f"{BASE_URL}/authentication/auth/",
json={"access_key": ACCESS_KEY, "secret_key": SECRET_KEY}
)
token = response.json()["token"]
# 列出所有资产
headers = {"Authorization": f"Bearer {token}"}
assets = requests.get(f"{BASE_URL}/assets/assets/", headers=headers).json()
print(assets)
6.3 高可用部署
对于生产环境,建议部署JumpServer高可用集群:
flowchart TB
Client --> LB[负载均衡器 Nginx/HAProxy]
LB --> Web1[Lina/Luna节点1]
LB --> Web2[Lina/Luna节点2]
Web1 --> Core1[Core节点1]
Web2 --> Core2[Core节点2]
Core1 --> Redis[(Redis集群)]
Core2 --> Redis
Core1 --> DB[(MySQL主从)]
Core2 --> DB
Core1 --> Celery1[Celery Worker1]
Core2 --> Celery2[Celery Worker2]
Celery1 --> RabbitMQ[(RabbitMQ)]
Celery2 --> RabbitMQ
高可用部署关键点:
- 多节点部署Core服务
- MySQL主从复制或使用MariaDB Galera Cluster
- Redis集群保证缓存高可用
- 使用共享存储存储录像文件(如NFS、S3)
七、常见问题解决
7.1 部署类问题
Q: 一键安装脚本执行失败,提示依赖错误?
A: 检查操作系统版本是否符合要求,建议使用纯净系统安装,执行前运行sudo apt update或yum update更新系统包。
Q: Docker部署后无法访问Web界面?
A: 执行docker-compose logs -f查看容器日志,检查端口是否被占用,防火墙是否开放80/443端口:
# 查看端口占用
netstat -tulpn | grep 80
# 开放端口 (CentOS)
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
7.2 使用类问题
Q: 无法通过堡垒机连接资产,提示"认证失败"?
A: 检查流程:
- 管理用户密码是否正确
- 资产网络是否可达(可通过【资产管理】→【资产列表】→【测试连接】验证)
- 目标资产是否允许堡垒机IP访问
Q: 会话录像无法播放?
A: 检查存储路径权限和磁盘空间,默认录像存储路径为/opt/jumpserver/data/media/records/,确保该目录有足够空间且权限正确。
八、总结与进阶学习
通过本文的指南,你已经掌握了JumpServer的部署、配置和核心功能使用。作为企业级堡垒机,JumpServer的功能远不止于此,建议继续深入学习:
- 高级权限管理:基于角色的细粒度权限控制、命令白名单配置
- 自动化运维:通过Ansible集成实现批量配置管理
- 安全集成:与SIEM系统联动、威胁检测规则配置
- 合规审计:等保2.0合规配置指南、审计报告生成
JumpServer作为开源项目,拥有活跃的社区支持和完善的文档,官方文档地址:https://docs.jumpserver.org/
最后,安全是一个持续过程,建议定期更新JumpServer版本,关注安全公告,保持对最新安全威胁的防御能力。立即行动,为你的企业构建坚固的运维安全防线!
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00