
JumpServer 开源 PAM 平台实战一键部署、默认凭据与核心组件架构解析【免费下载链接】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本文基于仓库中的 readmes/README.ko.mdJumpServer 韩文版项目说明整理而成并辅以仓库源码进行纵深验证。文章核心解决三个问题JumpServer 作为开源特权访问管理PAM平台到底解决什么问题、如何在干净的 Linux 服务器上快速部署并完成首次登录、以及支撑 SSH/RDP/Kubernetes/数据库/远程应用访问的核心组件是如何分工协作的。读完本文你将掌握 JumpServer 的最小可用部署流程、默认配置基线以及从源码层面理解其“核心服务 多连接器”的架构组织方式。JumpServer 是什么面向 DevOps 与 IT 团队的开源 PAM 平台按 readmes/README.ko.md 中的定义JumpServer 是一个开源的特权访问管理Privileged Access Management, PAM平台它为 DevOps 和 IT 团队提供通过 Web 浏览器按需、安全访问以下类型端点的能力SSH字符协议终端访问RDP图形化远程桌面Kubernetes容器编排集群数据库MySQL、PostgreSQL、Oracle、SQL Server 等多种数据库RemoteApp远程应用程序从仓库目录结构看这一能力定位在源码层面有清晰的对应apps/terminal 承载终端与会话相关能力apps/assets 负责资产、节点、协议与平台管理apps/perms 负责授权与权限控制apps/acls 承载命令过滤、登录控制等访问控制策略apps/audits 负责审计日志。可以说一个 PAM 平台的“连接—授权—审计”闭环在这些 Django App 中一一对应。仓库根目录的 README.md 与各语言版本如 readmes/README.ko.md、readmes/README.zh-hans.md保持同一信息骨架本文以韩文版为绝对主体展开。快速开始在干净的 Linux 服务器上一键部署硬件与系统要求按 readmes/README.ko.md 的说明快速部署前需要准备一台干净的 Linux 服务器要求为64 位系统内存 ≥ 4C8G即至少 4 核 CPU、8GB 内存“干净”意味着建议使用全新的操作系统环境避免已有服务尤其是 8080/8070 等端口与 JumpServer 冲突。一键安装命令在满足要求的服务器上直接执行官方提供的一键脚本curl -sSL https://github.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash该命令会从 JumpServer 最新 Release 中下载quick_start.sh并以 bash 执行自动完成依赖安装、镜像拉取与服务编排。浏览器访问与默认凭据安装完成后在浏览器中访问http://your-jumpserver-ip/默认登录凭据为用户名admin密码ChangeMe安全提示这是安装后的首次登录凭据登录后系统会要求修改初始密码务必在生产环境第一时间更换切勿保留默认密码。一键脚本背后的源码逻辑快速开始命令看似简单但仓库源码揭示了其背后的服务控制机制。容器镜像的入口是 entrypoint.sh脚本接收action默认start与service默认all两个参数先清理/opt/jumpserver/tmp/*.pid中的残留进程文件然后执行python jms ${action} ${service}。它也支持bash/sh进入容器 Shell与sleep长驻休眠常用于调试两种特殊动作。而jms是真正的服务控制入口见 jms它设置DJANGO_SETTINGS_MODULEjumpserver.settings并完成 Django 初始化从apps/jumpserver/const.py读取版本号VERSION从 config_example.yml 复制生成的config.yml中加载用户配置ConfigManager.load_user_config()支持start、stop、restart、status、upgrade_db、collect_static六种动作支持all、web、task、ai四类服务选择其中web服务启动前会先执行prepare()准备流程。prepare()是启动阶段的关键调用链见 jmscheck_database_connection() # 轮询等待数据库可用最多 60 次每秒一次 upgrade_db() # collectstatic migrate expire_caches() # 过期缓存清理 download_ip_db() # 下载 GeoLite2-City / ipipfree 地理 IP 库 install_builtin_applets() # 安装内置 applet远程应用 init_oauth2_provider() # 初始化 OAuth2 Provider其中check_database_connection()会对默认数据库执行 Django 的check --database default失败则每秒重试最多 60 次后退出退出码 10这保证了容器编排中“数据库后启动”的场景也能自动恢复。download_ip_db()会按需下载 GeoIP 与 ipip 两个 IP 库到apps/common/utils/ip/下用于登录地识别。从 Dockerfile 可以看到镜像对外暴露8080与8088端口默认CMD [start, all]即以start all方式启动全部核心服务。也就是说一键脚本最终拉起的是一个完整的 JumpServer 容器栈Web 服务监听在 8080 端口配置项HTTP_LISTEN_PORT: 8080见 config_example.yml这也是浏览器访问http://your-jumpserver-ip/无需带端口的原因。界面与能力概览文档中的功能图谱readmes/README.ko.md 通过一组界面截图展示了 JumpServer 的主要产品界面对应功能模块包括Console控制台资产管理、用户与权限管理的主界面PAM特权访问管理特权账号与访问治理视图Audits审计会话回放、操作日志与审计报表Workbench工作台用户日常使用的资产连接入口RBAC基于角色的访问控制细粒度角色与权限配置Settings系统设置认证、安全策略、消息通知等全局配置SSH / RDP / K8s / DB分别对应字符终端、图形桌面、Kubernetes 集群与数据库的具体连接界面这些截图反映的是产品功能的“面”而仓库中 apps/terminal/connect_methods.py 的components()方法则从源码角度证实了各协议的承载组件——这正是下一节要展开的核心组件架构。核心组件架构一个核心多个连接器readmes/README.ko.md 明确指出JumpServer 由多个关键组件组成它们共同构成 JumpServer 的功能框架为用户提供运维管理与安全控制的综合能力。下表继承原文档的组件清单状态列中标注为 private 的组件属于企业版私有仓库本文不讨论其发布状态项目说明LinaJumpServer Web UI前端界面LunaJumpServer Web 终端网页终端前端KoKoJumpServer 字符协议连接器SSH/Telnet 等LionJumpServer 图形协议连接器RDP/VNCChenJumpServer Web 数据库浏览器内操作数据库TinkerJumpServer 远程应用连接器WindowsPandaJumpServer EE 远程应用连接器LinuxRazorJumpServer EE RDP 代理连接器MagnusJumpServer EE 数据库代理连接器NecJumpServer EE VNC 代理连接器FaceliveJumpServer EE 人脸识别从源码验证组件分工在 apps/terminal/connect_methods.py 的components()方法中各连接器与协议的支持矩阵被显式声明可以作为上表组件描述的源码级佐证koko支持ssh、telnet、sftp、redis、mongodb、k8s、clickhouse、mysql、mariadb、sqlserver、postgresql、oracle等协议提供web_cliWeb 方式监听 HTTP/SSH/SFTP。chenWeb 数据库连接器支持mysql、postgresql、oracle、sqlserver、mariadb、db2、dameng提供web_guiWeb 方式。lion图形协议连接器支持rdp、vnc提供web_guiWeb 方式。magnus数据库代理连接器支持mysql、postgresql、oracle、mariadb、redis、sqlserver、mongodb。razorRDP 代理连接器仅支持rdp。kael面向 ChatGPT 类 AI 应用的连接器chatgpt协议。necVNC 代理连接器仅支持vnc。由此可见架构上 JumpServer 采取“核心服务负责授权与审计编排多个专用连接器按协议分流承载流量”的模式字符类协议走 KoKo图形类走 Lion/Razor数据库走 Chen/Magnus远程应用走 Tinker/Panda。这解释了为什么 README 中组件如此之多——每种协议族都有专门优化过的连接器。连接方式的三类来源同文件中的get_protocols_connect_methods()apps/terminal/connect_methods.py进一步显示一个资产协议最终可用的连接方式由三类方法合并而成Web 方式WebMethod如web_gui、web_cli、web_sftp由web_methods决定原生客户端方式NativeClient如 SSH Client、SFTP Client、mstsc远程桌面、DB Client 等且各协议都有对应的client_limits约束例如 KoKo 的 SSH 监听只拉起 SSH/Telnet 资产SFTP 监听只拉起 SFTP 资产Applet / 虚拟应用方式AppletMethod/VirtualAppMethod对应远程应用与虚拟应用分别由 Tinker监听 RDP与 Panda监听 HTTP承载。同时get_user_allowed_connect_methods()同文件 apps/terminal/connect_methods.py会根据ConnectMethodACL连接方式 ACL见 apps/acls/models/connect_method.py对用户可用的连接方式进行放行accept与禁用reject过滤体现了 PAM 平台“细粒度控制用户以何种方式访问资产”的安全设计。关键配置基线config_example.yml 速览部署后必然需要了解的配置集中在 config_example.yml。原文档虽未逐项列出但作为快速上手必备这里结合 apps/jumpserver/conf.py 中的Config.defaults默认值整理出最核心的一组配置项默认值conf.py说明SECRET_KEY空加密密钥生产环境必须改为随机字符串可用cat /dev/urandom \| tr -dc A-Za-z0-9 \| head -c 49; echo生成BOOTSTRAP_TOKEN空预共享 TokenKoKo 与 Guacamole 等组件用它注册服务账号DEBUGFalse生产环境保持关闭DB_ENGINEmysql支持 sqlite3、mysql、postgres 等DB_HOST/DB_PORT/DB_USER/DB_PASSWORD/DB_NAME127.0.0.1/3306/root/ 空 /jumpserver数据库连接参数REDIS_HOST/REDIS_PORT127.0.0.1/6379Redis 作为 Celery broker 与 WebSocket 通道REDIS_DB_CELERY/REDIS_DB_CACHE3/4Celery 与缓存的 Redis 逻辑库编号另有 session5、ws6HTTP_BIND_HOST/HTTP_LISTEN_PORT0.0.0.0/8080Web 服务监听地址与端口WS_LISTEN_PORT8070WebSocket 服务端口SESSION_COOKIE_AGE3600*24会话 Cookie 有效期SECURITY_MFA_AUTH00 不开启、1 全局开启、2 管理员开启 MFA其中DB_PASSWORD、REDIS_PASSWORD、SECRET_KEY属于敏感项apps/jumpserver/conf.py 中的ConfigCrypto支持通过环境变量SECRET_ENCRYPT_KEY使用国密 SM4 算法ECB 模式对这些配置值进行加解密配置文件中可存放密文。此外 config_example.yml 还提供了大量可选增强配置LDAP/AD 同步如AUTH_LDAP_SYNC_INTERVAL、AUTH_LDAP_SYNC_CRONTAB、OTP/MFAOTP_VALID_WINDOW、OTP_ISSUER_NAME、Luna 水印SECURITY_WATERMARK_ENABLED、人脸识别FACE_RECOGNITION_ENABLED等、Ansible 自动化任务的批量/总超时ANSIBLE_RUNNER_JOB_TIMEOUT、ANSIBLE_AUTOMATION_TOTAL_TIMEOUT等以及 OpenBao 作为 Vault 后端VAULT_ENABLED、VAULT_OPENBAO_ADDR等。这些内容在快速上手阶段无需改动但理解其存在有助于后续生产化调优。从 pyproject.toml 的依赖清单还可以看到运行环境的几个关键事实要求 Python ≥ 3.14基于 Django 5.2.15、Django REST Framework 3.17.2、Celery 5.6.0、Paramiko 3.5.1并内置 Ansible 9 用于资产自动化操作。这些版本信息以当前仓库 pyproject.toml 为准。参与贡献与开源许可JumpServer 欢迎通过提交 PR 参与贡献相关规范见仓库根目录的 CONTRIBUTING.md。许可证方面按 readmes/README.ko.md 的声明Copyright (c) 2014-2025 FIT2CLOUD, All rights reserved项目采用GNU General Public License version 3GPLv3授权代码以“AS IS”基础分发不附带任何明示或默示担保。使用与二次分发时需遵守 GPLv3 的条款如保留版权声明、以相同许可证开源衍生作品等完整许可证文本以 LICENSE 文件为准。小结本文以 readmes/README.ko.md 为骨架完整覆盖了 JumpServer 的项目定位、一键部署流程、默认登录凭据与核心组件架构并通过仓库源码做了三层纵深验证一是通过 jms 与 entrypoint.sh 还原了“一键脚本 → 服务控制 → 数据库检查/迁移/静态资源准备”的启动链路二是通过 apps/terminal/connect_methods.py 验证了 KoKo/Lion/Chen/Magnus 等连接器的协议支持矩阵与三类连接方式的组织逻辑三是通过 config_example.yml 与 apps/jumpserver/conf.py 梳理了首次部署必须了解的核心配置基线。基于这些内容读者已经具备完成一次最小化部署、理解默认行为并进一步深入源码的能力。【免费下载链接】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),仅供参考