中文EN

dsh-jumpserver

security已测通过npmMIT

通过对话查询与管理 JumpServer:资产、用户、账号、授权、会话、命令审计、命令过滤与 RBAC 角色,使用 AccessKeyID/AccessKeySecret(HTTP 签名)鉴权。

下载量 / Downloads
764
依赖体积 / node_modules
13.03 MB
测试时间 / Tested
2026-11-07
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add dsh-jumpserver

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

dsh-jumpserver

[English](./README.md)

一个 DeepSeek Harness 插件,通过对话查询并管理 JumpServer 资产,使用 JumpServer 的 AccessKeyID/AccessKeySecret(HTTP Signature)进行鉴权。

项目状态:v0.9.0。已实现资产、用户、账号、授权规则、会话、命令审计、用户组、命令过滤规则、资产树节点、RBAC 角色/角色绑定的只读查询,以及资产、账号、用户、资产授权规则、用户组、命令组、命令过滤规则、资产树节点(包括将节点移动到新父节点)、自定义 RBAC 角色/角色绑定的创建/更新/删除,以及用户的密码/MFA/SSH 密钥重置——均需经过强制的原生用户审批。考虑到 JumpServer 作为堡垒机/PAM 系统的角色,终止会话和工单审批目前有意保留不实现。

为什么用 dsh-jumpserver

  • 按关键字或过滤条件查询 JumpServer 的资产、用户、账号、资产授权规则、终端会话、已执行命令、用户组、命令过滤规则、资产树节点和 RBAC 角色/角色绑定。
  • 创建、更新、删除资产、账号、用户、资产授权规则、用户组、命令组、命令过滤规则、资产树节点(包括将节点移动到新父节点)、自定义 RBAC 角色/角色绑定,以及重置用户的密码/MFA/SSH 密钥——每次写操作执行前都必须经过明确的原生用户审批提示,模型无法绕过。
  • 拒绝删除或重置超级管理员(管理员)账号的密码,拒绝创建"授予所有权限"式的宽泛资产授权规则或命令过滤规则,拒绝重命名/删除组织根节点或删除仍含资产的节点,也拒绝修改或删除内置 RBAC 角色、或删除仍绑定用户的角色——以上均由工具自身强制执行,不只是写在文档里的约定。
  • 只读查询绝不泄露敏感信息:账号的密钥/密钥密码,以及用户的密码/公钥/MFA 密钥,在返回给模型前会被逐字段剔除,即便 JumpServer API 本身返回了这些字段。
  • 使用 JumpServer 官方开发文档中记录的 AccessKeyID/AccessKeySecret 签名机制(hmac-sha256 HTTP Signature)进行鉴权。
  • AccessKeySecret 保存在本地 DSH 凭证库中,永远不会被回显到浏览器。

环境要求

组件 · 支持的最低版本

Node.js · 20.11 及以上

DeepSeek Harness · 0.2.0-rc.1 – 0.2.1-rc.2(及后续 0.2.1 预发布版本)

JumpServer · REST API v1(支持 Access Key 认证)

安装

本地开发调试,从本地路径安装:

npm ci
dsh plugin --profile add link:/absolute/path/to/dsh-jumpserver

发布后,尽量安装已发布的、不可变的 tag 版本:

dsh plugin --profile add github:we39/dsh-jumpserver#v<version>

仅在测试时安装可变的开发分支:

dsh plugin --profile add github:we39/dsh-jumpserver

安装后需重启对应的 DSH profile。Windows 上请使用绝对路径 link:C:/path/to/dsh-jumpserver。

配置

在 DSH 中打开 设置 → JumpServer(DeepSeek Harness 0.2.0+ 在设置页左侧提供独立分区)。0.1.7 宿主上是 设置 → 插件 下的 JumpServer 标签页;0.1.5 及更早版本是 设置 → 插件 下的卡片。

页面列出你的 JumpServer 源站。每台想让助手访问的 JumpServer(例如生产、测试)各添加一个源站。每个源站包含:

  • 源站名称:必填且唯一,可用任何语言。你(或助手)用它来选择源站。
  • UID:自动生成、全球唯一、不可修改。凭证按它存放,所以重命名源站不会丢失密钥。
  • JumpServer URL:绝对地址,例如 https://jumpserver.example.com。
  • Access Key / Secret Key:在 JumpServer 网页控制台的个人 API Key 列表中创建的一对密钥。

可以把其中一个设为默认源站;省略 source 的工具调用会使用它。只有一个源站时,它自动就是默认。

Access Key/Secret Key 使用 DSH 特权的本地回环凭证 RPC——只写不读,存储的值永远不会被读回或显示。名称、URL 与默认源站存储在 jumpserver 设置命名空间中,属于非敏感字段。移除源站时只会清除它自己的密钥,且不会清除仍被其它源站引用的密钥。

设置页默认显示简体中文,只有当 DSH 本身选择了英文时才切换为英文。

HTTP 和 HTTPS 均可直接使用——没有 TLS 证书的内部部署可以直接用 http:// 地址,无需额外配置。请注意,纯 HTTP 会以明文方式传输签名后的请求(虽然密钥本身不会被传输),在不受信任的网络中建议优先使用 HTTPS。如需强制只使用 HTTPS(对所有源站生效),可在插件配置中关闭:

allowInsecureHttp: false

多源站

除 jumpserver_sources 外,每个工具都接受可选的 source 参数(源站名称或 UID)。你对助手说“看看测试环境的 JumpServer”,它会先调用 jumpserver_sources 获知有哪些名称,再传入 source。如果配置了多个源站但没有默认源站,省略 source 会直接报错,而不是猜一个。

写工具的审批提示会点名目标源站,并且审批与它绑定:如果在审批之后、执行之前默认源站发生了变化,写入会被拒绝,而不是落到另一台 JumpServer 上。

从 0.11.x 升级

原有的单源配置会继续可用。首次启动时,插件会把它转成一个名为 default 的源站,并沿用原来已存的 Access Key / Secret Key(密钥本身不会被搬运或重新输入)。如果这一步自动迁移没能执行,设置页会显示“检测到旧版单源配置”的提示和导入为源站按钮。

JumpServer 权限建议

建议使用仅具有资产只读权限的 JumpServer 账号创建 AccessKey,避免使用超级管理员账号的密钥进行本插件的接入。

工具

只读工具中涉及分页的接口支持 limit(1-100,默认 20)/ offset(默认 0)。

共 54 个工具(13 个只读 / 41 个写),覆盖 11 个域。所有写工具都需要原生用户审批。除 jumpserver_sources 外,每个工具都接受可选的 source 参数。

工具 · 行为

jumpserver_sources · 列出已配置的 JumpServer 源站(名称、URL、密钥是否已配置、是否默认);绝不返回密钥。

jumpserver_list_assets · 按可选的 search 关键字列出资产。

jumpserver_get_asset · 按 id 获取单个资产的完整详情,包含协议和网域信息。

jumpserver_list_users · 按可选的 search 关键字列出用户。绝不返回密码、公钥或 MFA 密钥。

jumpserver_get_user · 按 id 获取单个用户的完整详情。绝不返回密码、公钥或 MFA 密钥。

jumpserver_list_accounts · 列出账号(资产上的登录凭据),可按 asset id 或 username 过滤。绝不返回密钥或密钥密码。

jumpserver_get_account · 按 id 获取单个账号的完整详情。绝不返回密钥或密钥密码。

jumpserver_list_permissions · 列出资产授权规则,可按 userId 或 assetId 过滤。

jumpserver_list_sessions · 列出终端(审计)会话,可按 user、asset 或 isFinished 过滤。

jumpserver_create_asset · 写操作。 创建资产(必填 name、address、platform;可选 comment、isActive)。需要原生用户审批。

jumpserver_update_asset · 写操作。 按 id 更新已有资产;只会修改你传入的字段。需要原生用户审批。

jumpserver_delete_asset · 写操作,不可逆。 按 id 永久删除资产。需要原生用户审批。

jumpserver_create_account · 写操作。 创建账号(必填 username、asset;可选 name、secretType、secret、passphrase、privileged、isActive、comment)。需要原生用户审批,详见下方"账号密钥的处理方式"。

jumpserver_update_account · 写操作。 按 id 更新已有账号;只会修改你传入的字段,可用于轮换 secret/passphrase。需要原生用户审批。

jumpserver_delete_account · 写操作,不可逆。 按 id 永久删除账号。需要原生用户审批。

jumpserver_create_user · 写操作。 创建平台用户(必填 name、username、email;可选 comment、isActive)。不会设置初始密码——用 jumpserver_update_user 单独设置。需要原生用户审批。

jumpserver_delete_user · 写操作,不可逆。 按 id 永久删除用户。拒绝删除超级管理员(管理员)账号。需要原生用户审批。

jumpserver_update_user · 写操作。 按 id 更新已有用户;只会修改你传入的字段(name、email、comment、isActive)。也可以将登录密码重置为指定值(password)。拒绝修改超级管理员(管理员)账号的密码——其它字段仍可修改。需要原生用户审批,见下方"账号密钥的处理方式"——同样的暴露权衡适用于 password 值。

jumpserver_reset_user_mfa · 写操作。 按 id 解绑用户的 MFA/OTP 设备,迫使其下次登录时重新绑定。拒绝对超级管理员账号执行。需要原生用户审批。

jumpserver_reset_user_ssh_key · 写操作。 按 id 清空用户登录 JumpServer 本身所用的 SSH 公钥(不是资产账号密钥)。拒绝对超级管理员账号执行。需要原生用户审批。

jumpserver_create_permission · 写操作。 创建资产授权规则(必填 name;assets、accounts 必须是非空 UUID 数组;users/userGroups 至少提供一个且非空)。拒绝宽泛或"授予所有权限"式的匹配——不提供 all 或按节点匹配的选项。需要原生用户审批。

jumpserver_update_permission · 写操作。 按 id 更新已有规则;只会修改你传入的字段。传入的任何数组字段(users、userGroups、assets、accounts)都必须非空。需要原生用户审批。

jumpserver_delete_permission · 写操作,不可逆。 按 id 永久删除资产授权规则,立即撤销其授予的访问权限。需要原生用户审批。

jumpserver_list_commands · 列出已执行的会话命令(命令审计日志),可按 asset、account、user、sessionId 或 riskLevel 过滤。每行的命令输出会截断到 500 字符。

jumpserver_list_user_groups · 按可选的 search 关键字列出用户组。用户组本身不授予任何资产访问权限。

jumpserver_get_user_group · 按 id 获取单个用户组的完整详情,包含其成员用户 id。

jumpserver_create_user_group · 写操作。 创建用户组(必填 name;可选 users、comment)。需要原生用户审批。

jumpserver_update_user_group · 写操作。 按 id 更新已有用户组;只会修改你传入的字段。若传入 users,必须非空。需要原生用户审批。

jumpserver_delete_user_group · 写操作,不可逆。 按 id 永久删除用户组;成员用户本身不会被删除,但引

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:5,最后更新 2026-10-19

链接

GitHub · Homepage · npm

同类插件