JumpServer 开源 PAM 平台深度指南:架构、组件与快速部署实战

发布时间:2026/9/10 14:50:41
JumpServer 开源 PAM 平台深度指南:架构、组件与快速部署实战 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.es.md西班牙语版项目介绍为主线结合当前仓库源码系统讲解 JumpServer 作为开源特权访问管理PAM平台的核心定位、组件架构与快速部署流程并深入到 jms 启动脚本、config_example.yml 配置体系与 apps/terminal/connect_methods.py 协议支持矩阵等源码细节。读完本文你将掌握 JumpServer 的整体架构分层、各连接器组件的职责边界以及从零快速拉起一套可用的堡垒机环境的方法。一、JumpServer 是什么面向 DevOps 与 IT 团队的开源 PAM 平台JumpServer 是一个开源的PAMPrivileged Access Management特权访问管理平台即通常所说的堡垒机。它通过 Web 浏览器为 DevOps 和 IT 团队提供对 SSH、RDP、Kubernetes、数据库以及 RemoteApp 远程应用等终端的按需、安全访问能力。这一核心定位意味着 JumpServer 解决的是运维安全中最关键的一类问题特权账号集中管控。所有运维人员不再直接接触目标服务器的真实地址与凭据而是统一经由 JumpServer 进行身份认证、权限校验、会话接入与全程审计实现先登录、再授权、后访问、全留痕的安全闭环。从仓库目录结构可以直观看到支撑这一定位的业务模块布局apps/jumpserver/settings/base.py 中的INSTALLED_APPS业务模块职责orgs多组织架构支撑租户隔离users用户、用户组管理assets资产主机、数据库、云资产等与节点管理accounts账号特权账号与改密、收集等自动化perms资产授权与权限策略terminal终端会话与连接方式管理audits登录日志、操作审计acls命令过滤、登录控制等访问控制规则tickets工单审批流rbac基于角色的访问控制authentication本地/LDAP/SSO/OIDC/CAS 等多源认证这些模块共同构成了一个功能完整的特权访问管理平台而非单纯一个SSH 跳板机。二、快速启动一条命令拉起 JumpServer官方 README 提供了面向生产环境的一键部署方式。前提是准备一台干净的 Linux 服务器要求64 位操作系统硬件规格不低于4 核 CPU / 8 GB 内存4c8g在满足条件的服务器上执行curl -sSL https://github.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash安装完成后在浏览器中访问http://你的-jumpserver-IP/初始登录凭据为用户名admin密码ChangeMe安全提示首次登录后应立即修改admin密码并为生产环境生成独立的随机SECRET_KEY下文配置章节会详细说明。从源码视角看启动链路如果你希望在本地以源码方式运行 JumpServer而不是使用一键脚本仓库提供了完整的启动链路。核心入口是根目录的 jms 脚本它是一个 Python 编写的服务控制工具基于 Django 的management.call_commandpython jms start all -d # 启动全部服务后台守护模式 python jms start web # 仅启动 Web 服务 python jms start task # 仅启动 Celery 任务服务 python jms stop all # 停止全部服务 python jms restart all # 重启 python jms status # 查看状态 python jms upgrade_db # 升级数据库结构 python jms collect_static # 收集静态文件从 jms 的argparse定义可见它支持start / stop / restart / status / upgrade_db / collect_static六种动作服务类型可选all / web / task / ai还支持-d/--daemon守护模式、-w/--worker指定 worker 数、-f/--force强制模式。首次start all时会依次执行数据库连接检查、migrate、collectstatic、IP 地理库下载、内置 Applet 安装与 OAuth2 Provider 初始化等准备工作。容器化部署时Dockerfile 使用jumpserver/core-base作为构建基础镜像通过uv pip install安装依赖最终以 entrypoint.sh 作为入口默认执行start all并暴露8080Web与8088端口。三、组件架构一个平台多个专业连接器JumpServer 采用核心平台 协议连接器的分布式架构。根据 README 的组件表官方将其划分为若干关键项目共同组成 JumpServer 的功能框架项目说明LinaJumpServer Web 用户界面前端控制台LunaJumpServer Web 终端浏览器内字符/图形会话界面KoKo字符协议连接器SSH、Telnet 等Lion图形协议连接器RDP、VNC 等ChenWeb 数据库访问组件TinkerRemoteApp 远程应用连接器Windows 平台PandaRemoteApp 远程应用连接器企业版Linux 平台RazorRDP 代理连接器企业版Magnus数据库代理连接器企业版NecVNC 代理连接器企业版Facelive人脸识别组件企业版连接器与协议支持矩阵源码级验证仓库 apps/terminal/connect_methods.py 中ConnectMethodUtil.components()明确定义了各连接器与协议之间的对应关系这是对组件表最直接的源码佐证KoKoTerminalType.koko提供web_cli方式监听 HTTP/SSH/SFTP支持 SSH、Telnet、SFTP、Redis、MongoDB、K8s、ClickHouse、MySQL、MariaDB、SQLServer、PostgreSQL、Oracle 等协议ChenTerminalType.chen提供web_gui方式支持 MySQL、PostgreSQL、Oracle、SQLServer、MariaDB、DB2、达梦dameng等数据库的 Web 访问LionTerminalType.lion提供web_gui方式支持 RDP、VNC 图形协议MagnusTerminalType.magnus数据库代理支持 MySQL、PostgreSQL、Oracle、MariaDB、Redis、SQLServer、MongoDBRazorTerminalType.razorRDP 代理NecTerminalType.necVNC 代理。同时NativeClient枚举定义了 SSH Client、SFTP Client、DB Client/Guide、Remote Desktopmstsc、VNC Client 等原生客户端连接方式说明 JumpServer 不仅支持纯 Web 访问也支持通过本地客户端软件直连目标资产会话仍由平台代理并审计。此外Tinker/Panda 通过AppletMethod与VirtualAppMethod提供 RemoteApp 与虚拟应用接入能力。这套Web 方式 原生客户端 远程应用三层连接方法体系正是 JumpServer 能够覆盖 SSH、RDP、Kubernetes、数据库与 RemoteApp 五类终端的底层原因。四、核心配置详解从 config_example.yml 看平台可调参数JumpServer 的配置集中在根目录 config_example.yml实际部署时通常将其复制为config.yml使用jms 脚本在找不到配置时会提示cp config_example.yml config.yml。配置加载逻辑由 apps/jumpserver/conf.py 的Config类实现其中定义了大量带默认值的配置项并结合 apps/jumpserver/settings/base.py 注入 Django settings。以下分类说明关键配置1. 安全密钥必改项SECRET_KEY: BOOTSTRAP_TOKEN:SECRET_KEYDjango 加密密钥生产环境必须改为随机字符串且勿外泄官方建议用cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo生成BOOTSTRAP_TOKENKoKo、Guacamole 等组件注册服务账号使用的预共享 Token替代旧的注册接受机制。2. 数据库与 RedisDB_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: 6379数据库支持 SQLite、MySQL、PostgreSQL 等默认示例为 PostgreSQL 5432默认库名jumpserverRedis 同时作为 Celery 消息代理broker与 WebSocket 通道示例中默认库为REDIS_DB_CELERY: 3Celery、REDIS_DB_CACHE: 4缓存支持密码、SSL 与 Redis Sentinel 高可用配置。3. 服务监听端口HTTP_BIND_HOST: 0.0.0.0 HTTP_LISTEN_PORT: 8080 WS_LISTEN_PORT: 8070Web 服务默认绑定0.0.0.0:8080WebSocket 服务监听8070。4. Vault 凭据保险库OpenBao 默认后端VAULT_ENABLED: true VAULT_BACKEND: openbao VAULT_OPENBAO_ADDR: http://openbao:8200 VAULT_OPENBAO_MOUNT_POINT: pam VAULT_OPENBAO_TOKEN: VAULT_OPENBAO_TIMEOUT: 10开启后将敏感凭据托管至 OpenBaoHashiCorp Vault 的开源分支另有独立的 SSH CA 配置SSH_CA_*系列用于基于 OpenBao 的 SSH 客户端证书签发以及 HCP、Azure、AWS 等云厂商 Vault 后端选项。仓库 apps/accounts/backends/ 目录下的openbao/、hcp/、azure/、aws/、local/子目录即对应这些后端的具体实现。5. 认证与身份源AUTH_LDAP_SYNC_IS_PERIODIC: True AUTH_LDAP_SYNC_INTERVAL: 12 AUTH_LDAP_SEARCH_PAGED_SIZE: 1000 AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS: False支持 LDAP/AD 定时同步用户、分页搜索默认 1000 条/页apps/jumpserver/conf.py 中还定义了 OpenID/OIDC、CAS、SAML2、OAuth2、RADIUS、Passkey、企业微信、钉钉、飞书、Lark、Slack、自定义 SSO、UKey 等一整套第三方认证配置对应 apps/authentication/backends/ 下的cas/、oidc/、oauth2/、saml2/、radius/、passkey/、ukey/等实现目录。6. 安全策略会话、密码与水印SESSION_COOKIE_AGE: 3600 SESSION_EXPIRE_AT_BROWSER_CLOSE: false SECURITY_WATERMARK_ENABLED: False SECURITY_MFA_AUTH: 0 SECURITY_PASSWORD_MIN_LENGTH: 6 OTP_ISSUER_NAME: JumpServer会话过期默认 1 小时也可设置浏览器关闭即过期SECURITY_MFA_AUTH0 不开启、1 全局开启、2 仅管理员开启 MFASECURITY_MFA_METHODS支持 OTP、短信、邮箱、人脸、Passkey 等多种方式Luna 界面水印默认关闭可开启以强化防泄露密码复杂度大小写、数字、特殊字符均可单独配置。7. Ansible 自动化任务的超时体系config_example.yml 对大规模改密等自动化场景给出了非常详细的容量规划建议ANSIBLE_RUNNER_JOB_TIMEOUT: 1800 # 单批80 资产硬超时30 分钟 ANSIBLE_RUNNER_IDLE_TIMEOUT: 900 # 单批无输出超时15 分钟 ANSIBLE_AUTOMATION_TASK_TIMEOUT: 300 # 单主机单 Ansible task 超时5 分钟 ANSIBLE_AUTOMATION_TOTAL_TIMEOUT: 54000 # 整个任务总超时15 小时关键设计资产自动化按每 80 个资产分批、每批串行启动一个 ansible-runner。总超时估算公式为ceil(资产总数 / 80) × 单批 P95 耗时 × 1.3预留 30% 余量。例如 1 万资产、单批 P95 为 3 分钟时建议总超时至少 32400 秒9 小时。这类面向超大规模改密的工程化细节体现了 JumpServer 在自动化运维能力上的深度。8. 人脸识别默认关闭FACE_RECOGNITION_ENABLED: false FACE_RECOGNITION_DEVICE: auto # auto, cpu, gpu FACE_LIVENESS_MODE: motion # off, motion, onnx, hybrid人脸识别默认关闭需先通过uv run python requirements/download_face_models.py下载模型后再显式开启并支持活体检测motion/onnx/hybrid 模式与 GPU 推理对应 requirements/download_face_models.py。五、仓库布局与二次开发指引Django 应用组织JumpServer 后端是一个标准的 Django 多应用工程所有业务代码位于 apps/ 目录每个业务域如users、assets、accounts、terminal、audits、perms都遵循api / models / serializers / migrations / tasks / signal_handlers的标准分层公共能力沉淀在 apps/common/DRF 扩展、SDK、存储、缓存、工具函数等与 apps/libs/Ansible 执行器等平台常量与版本号定义在 apps/jumpserver/const.pyVERSION 2.0.0全局路由入口为 apps/jumpserver/urls.py。自动化与审计能力apps/accounts/automations/ 与 apps/assets/automations/ 分别承载账号侧改密、推送、收集、验证、删除与资产侧Ping、事实采集的自动化任务配合utils/ansible_executor/下的 playbook 模板与 apps/accounts/tasks/、apps/assets/tasks/ 中的 Celery 任务调度审计侧由 apps/audits/ 负责登录日志、操作日志支持数据库与 Elasticsearch 双后端apps/audits/backends/。六、许可协议与社区贡献JumpServer 遵循GNU GPL v3开源许可Copyright (c) 2014-2025 FIT2CLOUD, All rights reserved.。该许可允许自由使用、修改与再分发但要求衍生作品同样以 GPLv3 开放源码。完整条款见 LICENSE。社区贡献方面欢迎通过提交 Pull Request 参与开发具体规范请参考 CONTRIBUTING.md。仓库同时提供了多语言 README 以便全球开发者阅读包括简体中文 readmes/README.zh-hans.md、繁体中文 readmes/README.zh-hant.md、英文 README.md、日文 readmes/README.ja.md、葡萄牙语 readmes/README.pt-br.md、俄文 readmes/README.ru.md 与韩文 readmes/README.ko.md。七、总结JumpServer 通过核心平台 多协议连接器的架构将 SSH、RDP、Kubernetes、数据库与 RemoteApp 五类访问场景统一收敛到一套 PAM 体系中前端由 Lina/Luna 提供控制台与 Web 终端接入侧由 KoKo/Lion/Chen/Magnus/Razor/Nec/Tinker/Panda 分别承载字符、图形、数据库与远程应用协议后端则由 config_example.yml 驱动的配置体系支撑认证、Vault 凭据托管、自动化改密与全面审计。无论是通过quick_start.sh一键部署还是基于 jms 脚本做源码级定制这套架构都能为 DevOps 与 IT 团队提供可审计、可管控、可自动化的特权访问基础设施。【免费下载链接】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),仅供参考