首页
/ 15分钟零成本搭建企业级堡垒机:JumpServer从部署到实战全指南

15分钟零成本搭建企业级堡垒机:JumpServer从部署到实战全指南

2026-02-04 04:27:13作者:吴年前Myrtle

你是否还在为服务器权限管理混乱而头疼?运维团队共享账号导致安全审计无从追溯?远程运维操作缺乏有效监控?作为广受欢迎的开源堡垒机(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 首次登录与基础设置

  1. 使用浏览器访问JumpServer地址,输入默认账号密码登录
  2. 系统强制要求修改默认密码,建议遵循"大小写字母+数字+特殊符号"原则
  3. 进入【系统设置】→【基本设置】,配置企业信息和邮件服务器

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 资产管理

资产管理是堡垒机的基础,支持添加服务器、网络设备、数据库等多种资产类型:

  1. 添加资产

    • 进入【资产管理】→【资产列表】→【创建资产】
    • 填写资产信息:
      • 资产名称:web-server-01
      • 资产类型:服务器
      • IP地址:192.168.1.100
      • 操作系统:Linux
      • 协议组:SSH (22端口)
  2. 创建管理用户: 管理用户是JumpServer用来登录资产的账号,建议使用具有sudo权限的账号:

    • 进入【资产管理】→【管理用户】→【创建管理用户】
    • 账号名称:jumpserver-manager
    • 用户名:root
    • 认证方式:密码 / SSH密钥
    • 密码:资产root用户密码
  3. 创建资产节点: 节点用于资产分类管理,支持树形结构:

    生产环境
    ├── Web服务器组
    │   ├── web-server-01
    │   └── web-server-02
    ├── 数据库组
    │   └── db-server-01
    └── 应用服务器组
        └── app-server-01
    

5.2 用户与权限管理

JumpServer采用RBAC(基于角色的访问控制)模型,实现精细化权限管理:

  1. 创建用户组

    • 进入【用户管理】→【用户组】→【创建用户组】
    • 名称:运维组
    • 描述:负责日常服务器维护的团队
  2. 创建普通用户

    • 进入【用户管理】→【用户列表】→【创建用户】
    • 基本信息:姓名、用户名、邮箱、手机号
    • 所属用户组:运维组
    • 认证方式:本地认证 / LDAP (企业可集成AD域)
  3. 创建权限规则: 权限规则定义了用户组对哪些资产拥有访问权限:

    • 进入【权限管理】→【权限列表】→【创建权限】
    • 名称:Web服务器访问权限
    • 用户组:运维组
    • 资产节点:Web服务器组
    • 系统用户:web-operator (后续创建)
    • 权限有效期:永久 / 自定义时间段
  4. 创建系统用户: 系统用户是 JumpServer 用来登录资产的账号,与管理用户的区别是系统用户是资产上的普通账号:

    • 进入【资产管理】→【系统用户】→【创建系统用户】
    • 名称:web-operator
    • 用户名:operator
    • 认证方式:自动生成密钥 (推荐)
    • 特权提升:允许sudo (可限制命令白名单)

5.3 远程连接实战

5.3.1 SSH连接Linux服务器

  1. 登录JumpServer Web控制台
  2. 进入【Web终端】→【资产列表】
  3. 找到目标资产,点击右侧【连接】按钮
  4. 在弹出的Web终端中执行操作,所有命令会被实时记录

5.3.2 RDP连接Windows服务器

  1. 进入【Web终端】→【资产列表】
  2. 找到Windows资产,点击【连接】→【RDP】
  3. 系统会自动下载RDP文件或在浏览器中打开Web RDP客户端
  4. 输入用户名密码即可登录(如已配置单点登录则无需重复认证)

5.3.3 Kubernetes集群访问

JumpServer支持通过Web控制台直接访问Kubernetes集群:

  1. 添加K8s资产:

    • 资产类型:Kubernetes
    • API地址:https://k8s-api-server:6443
    • 证书认证:上传kubeconfig文件
  2. 连接K8s集群:

    • 进入【Web终端】→【Kubernetes】
    • 选择集群和命名空间
    • 使用Web终端执行kubectl命令

5.4 审计与报表

JumpServer提供全面的审计功能,满足合规审计需求:

  1. 会话管理

    • 进入【审计管理】→【会话管理】
    • 可查看所有活跃会话和历史会话
    • 支持按用户、资产、时间段筛选
    • 点击会话记录可回放操作录像
  2. 命令审计

    • 进入【审计管理】→【命令记录】
    • 查看所有用户执行的命令
    • 支持危险命令标记(如rm -rf、reboot等)
    • 可导出Excel报表
  3. 文件传输审计

    • 进入【审计管理】→【文件传输】
    • 查看所有上传/下载的文件记录
    • 包含文件名、大小、时间戳等信息

六、高级应用配置

6.1 自动化运维

JumpServer支持通过作业中心实现自动化运维:

  1. 创建命令模板

    • 进入【作业中心】→【命令模板】→【创建】
    • 名称:查看磁盘使用率
    • 命令内容:df -h
    • 描述:检查服务器磁盘使用情况
  2. 创建批量作业

    • 进入【作业中心】→【作业列表】→【创建作业】
    • 选择执行目标资产
    • 选择命令模板或输入自定义命令
    • 设置执行方式:立即执行 / 定时执行
  3. 查看作业结果

    • 在作业详情页查看执行结果
    • 支持导出执行报告

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 updateyum 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: 检查流程:

  1. 管理用户密码是否正确
  2. 资产网络是否可达(可通过【资产管理】→【资产列表】→【测试连接】验证)
  3. 目标资产是否允许堡垒机IP访问

Q: 会话录像无法播放?
A: 检查存储路径权限和磁盘空间,默认录像存储路径为/opt/jumpserver/data/media/records/,确保该目录有足够空间且权限正确。

八、总结与进阶学习

通过本文的指南,你已经掌握了JumpServer的部署、配置和核心功能使用。作为企业级堡垒机,JumpServer的功能远不止于此,建议继续深入学习:

  • 高级权限管理:基于角色的细粒度权限控制、命令白名单配置
  • 自动化运维:通过Ansible集成实现批量配置管理
  • 安全集成:与SIEM系统联动、威胁检测规则配置
  • 合规审计:等保2.0合规配置指南、审计报告生成

JumpServer作为开源项目,拥有活跃的社区支持和完善的文档,官方文档地址:https://docs.jumpserver.org/

最后,安全是一个持续过程,建议定期更新JumpServer版本,关注安全公告,保持对最新安全威胁的防御能力。立即行动,为你的企业构建坚固的运维安全防线!

登录后查看全文
热门项目推荐
相关项目推荐