☰
Jumpserver堡垒机生产环境部署实战:从选型到Docker Compose落地
2026/10/7 3:58:09 网站建设 项目流程

1. 为什么我会选择Jumpserver,以及部署前的版本与架构决策

先说一下我当时的核心场景:公司服务器数量到了二十多台,开发、测试、生产环境混在一起,SSH密钥没人统一管,有人离职了还得挨个服务器删公钥,经常漏掉某几台。更头疼的是,领导问起来“昨天谁动过那台生产服务器”谁也答不上来。这种状态下,上堡垒机已经不是选择题,而是迟早要做的必答题。

当时市面上的方案其实有几个方向:商业堡垒机(比如之前热搜里提到的明御堡垒机,部署简单、功能齐全,但按资产数收费不便宜);开源方案里Jumpserver是知名度最高的,还有另外一些轻量工具比如Teleport、NPS那类带简单审计能力的跳板机。我在对比之后选了Jumpserver,原因有三点:第一,功能边界完整,它不只是“跳板”,还自带认证、授权、审计、账号管理这四大块;第二,社区活跃,网上遇到问题能找到大量已经踩过坑的案例——这一点在你部署的时候会深有体会;第三,它支持组件化部署,可以先单机跑起来,后面规模大了再拆组件,不用一上来就设计一个复杂的分布式架构。

版本选择上我需要认真提醒一句。当时Jumpserver稳定版是v2.x系列,后来到了v3.0之后组件和目录结构都做了比较大的调整(热搜词里有一条“jumpserver升级到3.0后原来的系统账号没了”,这问题到现在都有人在踩)。如果你现在新部署,我会建议直接用官方推荐的当前稳定版本,不要因为网上老教程多就去部署v2.x版本。我第一次部署时就是照着旧教程装v2.28,后来想升v3发现存量配置迁移还有一些需要注意的地方——这部分我在后面单开一节讲。

部署架构上,我选择的是标准的单机all-in-one方式:Jumpserver核心服务、KoKo组件(负责SSH协议接入)、Lion组件(负责Web终端接入)、数据库和Redis全部跑在同一台8C16G的云主机上。这个配置对一百台以内的资产管理规模是完全够用的。官方文档里其实推荐了一个更稳妥的部署路径:先用Docker方式把核心服务跑起来,再根据自己的需求选择是否额外部署KoKo与Lion组件。但如果你是企业正式环境使用,我建议你直接采用docker-compose编排的方式部署,因为升级和回滚都方便,配置也好管理——具体操作我下一节写。

做过一次之后,我的体感是:Jumpserver架构最值得先搞清楚的,是“组件各自负责什么”这件事。不要稀里糊涂把所有服务当成一个黑盒去部署。你搞清楚之后,后面排查故障的效率会高很多。Jumpserver的核心组件大致可以分为:

  • core:核心API服务,负责资产、用户、授权、审计等数据的处理和持久化,它是整个系统的心脏;
  • KoKo:负责SSH和SFTP通道的接入,用户从终端SSH到堡垒机时实际打交道的是它;
  • Lion:负责Web端网页终端和VNC协议,支持通过浏览器直接操作目标主机;
  • Celery Worker:处理异步任务,比如批量推送系统用户、执行任务等;
  • Nginx:统一对外入口,做反向代理和Web资源服务;
  • MySQL + Redis:MySQL存放业务数据,Redis承担缓存和Celery的任务队列。

表格列出来更清楚:

组件职责对应端口关键配置
coreAPI服务、鉴权、资产管理8080SECRET_KEY、BOOTSTRAP_TOKEN
KoKoSSH/SFTP接入组件2222与core通信的TOKEN
LionWeb终端/VNC接入组件8081依赖core API
Nginx对外Web入口80/443反向代理至core/Lion
MySQL业务数据存储3306独立数据库库名
Redis缓存与任务队列6379无特殊要求

组件之间通过密钥和Token互相通信,所以你在配置环境变量时,SECRET_KEY和BOOTSTRAP_TOKEN这两个值必须保持一致,很多部署失败都是因为这两个值配乱了。

2. 生产环境部署全流程:从脚本安装到首次登录

我在部署时没有使用官方提供的一键安装脚本(虽然它能装好,但你在后续管理配置时会觉得不够透明),而是选择了Docker Compose方式。下面这套流程我是在全新CentOS 7.9服务器上完整跑通的,其他发行版差异不大,关键是在起Docker之前把系统依赖和防火墙准备好。

2.1 系统预配置、Docker环境与Compose文件的准备

服务器配置最低建议4C8G,磁盘100G以上——因为审计录像和日志会持续增长,磁盘给大了免得后面迁移。系统准备好之后,先做三件事:更新系统源、关闭SELinux或设置为permissive、配置防火墙放行端口。

SELinux不关的话,Docker挂载目录和容器内进程的权限问题会让你排查到怀疑人生,如果你对SELinux策略不熟悉,建议直接setenforce 0并修改/etc/selinux/config为SELINUX=permissive,然后在防火墙上放行80、443、2222这三个端口:

firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=2222/tcp firewall-cmd --reload

2222端口是KoKo对外提供SSH接入的端口,用户在测试连接时容易忘记这个端口只允许从堡垒机所在网络访问,生产环境建议不要直接暴露到公网。如果你有云安全组,在安全组层面只放行来源IP。

接下来安装Docker和Compose插件。这一步不同系统版本差异比较大,我当时用的是官方推荐的方式:

# 安装docker-ce及docker-compose插件 curl -fsSL https://get.docker.com | bash systemctl enable --now docker # 验证 docker --version docker compose version

然后使用官方GitHub仓库里现成的docker-compose.yml作为底座。这个文件官方会持续维护,里面的MySQL、Redis、Core、KoKo、Lion镜像版本都是配套发布的,不需要自己改动镜像版本,否则容易

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询