Jumpserver离线部署完整实战:内网环境一次搞定安装与启动
Jumpserver离线部署完整实战内网环境一次搞定安装与启动【免费下载链接】jumpserverJumpServer is an open-source Privileged Access Management (PAM) platform that provides DevOps and IT teams with on-demand and secure access to SSH, RDP, Kubernetes, Database and RemoteApp endpoints through a web browser.项目地址: https://gitcode.com/GitHub_Trending/ju/jumpserver对于机房隔离、涉密网络或专网环境中的运维团队来说内网机器无法访问外网几乎是常态。而堡垒机这类安全基础设施恰恰是最需要部署在这样环境里的系统。JumpServer 作为广受欢迎的开源堡垒机PAM 特权访问管理平台能让你通过浏览器安全地管理 SSH、RDP、Kubernetes、数据库与 RemoteApp 等各类资产。可问题在于它依赖一长串系统库、Python 包和自动化组件断网环境下手动凑齐这些依赖常常让部署变成一场噩梦。本文不绕弯子直接给出一条验证过的离线路径先在联网机器上把依赖弹药备齐再把整个 JumpServer 无网络部署流程跑通。全文从方案选型讲到分步实操最后附上避坑清单帮你用最短时间完成 JumpServer 内网环境安装步骤。一、离线部署难点在哪里为什么断网环境最怕装堡垒机先摆事实。JumpServer 的部署链路并不复杂但链条很长任何一个环节缺包都会导致整体失败系统级编译依赖像libldap2-dev、openldap-devel、freerdp、sshpass这类包负责支撑认证、远程协议与自动化执行Python 生态依赖项目依赖paramiko、ansible-core、cryptography、pymysql等大量组件且版本被严格锁定在pyproject.toml中运行时中间件MySQL/PostgreSQL 数据库、Redis 缓存与消息队列一个都不能少离线环境的隐性网络调用服务首次启动时会尝试下载 IP 归属地数据库GeoLite2等资源这在无外网环境中需要提前处置。把这些一次性讲清楚是因为Jumpserver 离线包制作方法的核心思路就是提前把上述所有依赖搬运到目标机器上而不是在断网现场一个个碰运气。二、两条离线路线横向对比容器化与源码安装怎么选动手之前先做选型。JumpServer 离线部署主流有两条路线各有适用场景先看下表再决定对比维度Docker 容器化路线源码手动安装路线依赖隔离性强依赖全部封在镜像内弱依赖直接装进系统易污染环境一致性高镜像即环境依赖系统版本容易水土不服前置条件需要 Docker、docker compose需要 Python 3.14、数据库、Redis离线准备量只需构建并导出一个镜像 tar 包需要分别准备系统包与 Python 包升级维护替换镜像即可操作简单需重跑迁移步骤较多适用场景目标机支持容器追求省心纯物理机、无容器或系统很干净结论给得直接一点如果你的内网服务器能装 Docker优先走容器化路线一条docker save/docker load就能完成 JumpServer 无网络部署教程里的搬运环节如果环境苛刻、没有容器或者你希望清楚掌控每个组件源码路线反而更可控。本文两条路线都会覆盖你先按场景对号入座。三、联网机器上预先制作 JumpServer 离线安装包的方法无论走哪条路线第一步都是在一台能上网的机器上把代码和依赖备齐。以/opt/jumpserver为工作目录先把项目拉下来git clone https://gitcode.com/GitHub_Trending/ju/jumpserver cd jumpserver需要注意联网机器与目标服务器的操作系统最好保持同一大版本例如同为 Ubuntu 20.04 或同为 CentOS 7否则下载的 deb/rpm 包可能无法安装。3.1 Debian/Ubuntu 系统依赖包一键下载项目在requirements/deb_pkg.sh中列出了全部所需的 apt 包。要批量下载而不安装用apt-get download即可apt-get download $(grep -v # requirements/deb_pkg.sh | tr \n )所有.deb文件会落到当前目录打包后拷到内网机器后续放到/var/cache/apt/archives/下再用dpkg -i *.deb就能离线装完。3.2 RHEL/CentOS 系统依赖包与本地仓库制作红帽系环境依赖requirements/rpm_pkg.sh中列出的 rpm 包。先用yumdownloader把它们连同依赖一并抓下来yum install -y yum-utils yumdownloader --resolve $(grep -v # requirements/rpm_pkg.sh | tr \n )把 rpm 文件拷到内网服务器后用createrepo建成一个本地 yum 源才能真正离线安装createrepo /opt/rpms cat /etc/yum.repos.d/local.repo EOF [local] nameLocal Repository baseurlfile:///opt/rpms enabled1 gpgcheck0 EOF yum -y install $(grep -v # /opt/jumpserver/requirements/rpm_pkg.sh | tr \n )3.3 Python 依赖包整体下载与迁移JumpServer 的 Python 依赖以pyproject.toml为准运行时还需一个requirements/requirements.txt补充包在联网机器上统一拉下来pip download -r requirements/requirements.txt -d /opt/jumpserver-offline/pypkgs pip download --no-deps . -d /opt/jumpserver-offline/pypkgs内网安装时用--no-index --find-links指定本地目录注意--no-deps那一条要在联网机器上保证依赖完整性这里更稳妥的做法是直接对照pyproject.toml的依赖列表执行pip download把全部 wheel 收进同一个目录。3.4 离线素材清单自查表出发去内网之前对照这张表逐项打勾缺一项都不要上路素材来源说明项目源码git clone或直接打包目录版本需与目标环境一致deb/rpm 系统依赖包3.1 / 3.2 小节与目标系统版本匹配Python wheel 包3.3 小节含全部锁定版本数据库与 Redis离线环境自带MySQL/MariaDB/PostgreSQL 任选IP 数据库文件内网预置对应apps/common/utils/geoip/GeoLite2-City.mmdb四、Docker 路线镜像构建、导出与离线加载的完整闭环目标机有 Docker 时这一节能直接照做。先在联网机器上构建镜像项目提供了现成脚本utils/build_docker.sh它需要一个版本号参数bash utils/build_docker.sh v4.0.0 docker save -o jumpserver-image.tar jumpserver/jumpserver:v4.0.0到内网服务器后加载镜像并准备好数据目录docker load -i jumpserver-image.tar mkdir -p /opt/jumpserver/data docker run -d --name jms \ -p 8080:8080 -p 2222:2222 \ -v /opt/jumpserver/data:/opt/jumpserver/data \ jumpserver/jumpserver:v4.0.0容器内的entrypoint.sh会先自动执行数据库迁移、静态资源收集等初始化动作这也是 JumpServer 离线部署 Docker 方案里开箱即用的关键。数据库、Redis 地址通过环境变量注入即可容器默认暴露 8080 端口。五、源码路线内网环境手动安装 JumpServer 的分步实操不想用 Docker或目标机压根没有容器环境就按下面的顺序一步步来。这套流程同样适用于 JumpServer 内网环境安装步骤的排障参考。5.1 安装系统依赖并准备 Python 3.14把上一节准备好的 deb/rpm 包装完Debian 系用dpkg -i *.deb红帽系用本地 yum 源。JumpServer 要求 Python 3.14建议用官方源码编译安装或直接复用系统新版本并确保python3、pip在 PATH 中。5.2 生成密钥并编写 config.yml把示例配置复制一份然后逐项填写cp config_example.yml config.yml三个必填项务必处理SECRET_KEY加密密钥生产环境必须改为随机串官方注释里也给出了生成命令cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49; echoBOOTSTRAP_TOKEN组件间通信的预共享 Token同样要随机生成数据库与 Redis默认配置是 PostgreSQL也可按需切换为 MySQL 或 sqlite3测试用Redis 负责 Celery 与 WebSocket 消息需先启动。DB_ENGINE: postgresql DB_HOST: 127.0.0.1 DB_PORT: 5432 DB_USER: jumpserver DB_PASSWORD: 你的密码 DB_NAME: jumpserver REDIS_HOST: 127.0.0.1 REDIS_PORT: 63795.3 离线安装 Python 依赖并初始化数据库在内网机器上用预先下载好的 wheel 目录完成安装pip install --no-index --find-links/opt/jumpserver-offline/pypkgs -r requirements/requirements.txt接着执行数据库迁移与静态资源收集。也可以直接用项目根目录的jms管理工具一步到位python jms upgrade_db python jms collect_static这两个命令内部就是 Django 的migrate与collectstatic比起手动敲python apps/manage.py migrate更不容易漏步骤。5.4 启动服务前台验证与后台常驻两种方式先以前台方式启动确认日志没有异常bash entrypoint.sh start all看到服务正常监听后改用守护进程方式常驻python jms start all -djms支持的服务参数是all、web、task日常排障时只启动web会更快。停止与状态查看分别用python jms stop all与python jms status。六、常见错误与排查思路离线环境最容易翻车的几个点IP 数据库下载失败导致启动卡住。服务首次启动的prepare()阶段会尝试从公网拉取 GeoLite2 等 IP 库文件断网环境会反复重试。解决方案是提前下载该文件放到apps/common/utils/geoip/目录下或直接通过离线素材清单第 5 项预置。数据库连不上日志里反复出现 Check database connection。jms会重试 60 次、每次间隔 1 秒通常是数据库没启动、账号密码写错或端口不通。先用pg_isready或mysqladmin ping排除数据库本身问题再核对config.yml中的DB_*参数。pip 安装报mysqlclient编译失败。这是典型的系统头文件缺失说明 Debian 系的default-libmysqlclient-dev或红帽系的mariadb-devel没装上回到 3.1/3.2 小节补齐依赖再重装。Web 起来了但任务Celery不执行。检查 Redis 配置与进程状态task服务依赖REDIS_*参数离线环境下最容易遗漏的是 Redis 的密码与DB_CELERY库编号。端口被占用。默认HTTP_LISTEN_PORT: 8080、WS_LISTEN_PORT: 8070与现有服务冲突时在config.yml调整后重启。七、避坑清单与效果验证如何确认部署真正成功把上面这些经验浓缩成一份可直接贴在工位上的清单✅ 联网机器与内网机器的系统大版本保持一致否则系统包装不上✅ 打包前核对pyproject.toml与requirements.txtwheel 目录一个不少✅ 首次启动前预置 IP 数据库文件避免prepare()阶段卡网络✅SECRET_KEY、BOOTSTRAP_TOKEN用随机串生成不要留空✅ 先前台启动看日志再切守护进程不要一上来就-d✅ 防火墙放行 8080/8070 端口再谈验证二字。验证环节按三步走首先用python jms status确认 web 与 task 都在运行其次在服务器本机执行curl -I http://127.0.0.1:8080看到 HTTP 200 即说明 Web 服务已就绪最后用浏览器访问https://内网IP:8080首次登录创建管理员账号能正常进入控制台并看到资产列表为空、可手动添加就代表 JumpServer 离线部署全流程已经跑通。八、日常维护与升级延伸备份脚本与版本迭代部署完成不等于结束。项目在utils/backup_db.sh提供了数据库备份脚本它会按时间戳把 MySQL 全库 dump 到data/backup/目录bash utils/backup_db.sh离线升级的套路与首次部署高度一致把新版源码拷入 → 用新依赖目录执行pip install --no-index→python jms upgrade_db完成迁移 → 重启服务。升级前务必先跑一次备份并保留旧版config.yml备查。九、延伸阅读与求助渠道想深入理解部署细节建议按需查阅项目内的以下文件系统依赖清单requirements/deb_pkg.sh 与 requirements/rpm_pkg.sh容器镜像构建Dockerfile 与 utils/build_docker.sh启动编排与状态管理entrypoint.sh 与 jms配置模板全量注释config_example.yml数据库备份脚本utils/backup_db.sh项目官方文档位于 docs/README.mdGitHub 仓库的 Issues 区与官方社区是国内用户最常求助的地方遇到版本相关疑问先搜 Issues 里是否已有同类问题再带着日志发帖通常能更快得到回复。离线环境部署的本质是预判一切网络依赖只要把清单做全、把顺序走对JumpServer 在断网机房也能稳稳落地。【免费下载链接】jumpserverJumpServer is an open-source Privileged Access Management (PAM) platform that provides DevOps and IT teams with on-demand and secure access to SSH, RDP, Kubernetes, Database and RemoteApp endpoints through a web browser.项目地址: https://gitcode.com/GitHub_Trending/ju/jumpserver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考