DeepSeek Harness 集成 JumpServer 插件

前言

DeepSeek Harness(DSH)以「一切皆插件」为理念,插件是扩展智能体能力的基本单位。在运维场景中,如果希望智能体通过对话直接操作 JumpServer 资产、用户、权限等,需要插件在 DSH 进程中实现与 JumpServer REST API v1 的通信。we39/dsh-jumpserver 插件提供了这套能力,支持通过 AccessKeyID/AccessKeySecret 进行 HTTP Signature 认证,并将所有敏感信息(密码、密钥、MFA、私钥等)在返回前脱敏。

这是什么

we39/dsh-jumpserver 是一个 DeepSeek Harness 插件,用于通过对话查询和管控 JumpServer 资产。维护者为 we39。它通过 AccessKey/SecretKey 对(HTTP Signature 方式)与 JumpServer 对话,支持读/写 54 个工具,所有写操作需要本地用户确认。

核心功能

插件提供 54 个工具,分为 11 个域:

  • Sources:列出已配置的 JumpServer 源(只读)
  • Assets:资产详情、创建、更新、删除
  • Users:用户详情、创建、更新、删除,以及密码/MFA/SSH 密钥重置
  • Accounts:资产账号详情、创建、更新、删除
  • Permissions:资产权限规则详情、创建、更新、删除
  • Sessions & Audit:终端会话、命令审计日志
  • User Groups:用户组详情、创建、更新、删除
  • Command Groups:命令模式组详情、创建、更新、删除
  • Command Filters:安全过滤规则详情、创建、更新、删除
  • Asset Tree:资产树节点详情、创建、更新、删除、移动
  • RBAC:角色与绑定详情、创建、更新、删除

所有写操作触发本地用户确认,模型无法绕过。读操作返回的字段中,账号密码、用户密码、公钥、MFA 密钥、账号短语等均被脱敏。

安装与启用

插件需要 DeepSeek Harness 0.2.0-rc.1 到 0.2.1-rc.2(及后续 0.2.1 预发布版本)和 Node.js 20.11 或更新版本。

从本地路径安装(本地开发):

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

从 GitHub 安装已发布版本(推荐):

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

从 GitHub 安装开发分支(仅用于测试):

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

安装后重启选定的 DSH 配置文件(profile)。在 Windows 上,本地路径需使用绝对路径,例如 link:C:/path/to/dsh-jumpserver。

配置

在 DSH 中打开 Settings → JumpServer(DeepSeek Harness 0.2.0+ 在左侧导航独立区域;0.1.7 在 Settings → Plugins 的 JumpServer 选项卡;0.1.5 及更早版本在 Settings → Plugins 的卡片中)。

该页列出 JumpServer 源。添加每台 JumpServer 的一个源,每个源包含:

  • Source name:必填且唯一,用于选择源(任意语言)
  • UID:自动生成,全局唯一且只读,凭据以 UID 为键
  • JumpServer URL:绝对基础 URL,例如 https://jumpserver.example.com
  • Access Key / Secret Key:在 JumpServer 控制台的「个人 API Key」列表中创建

将一个源标记为默认;未指定 source 的工具调用使用默认源。只有一个源时自动为默认。

AccessKey/SecretKey 通过 DSH 的特权回环凭据 RPC 传递,写入-only,存储后不会被读取或显示。名称、URL 和默认设置以非密钥形式保存在 jumpserver 配置命名空间。

插件配置项:

allowInsecureHttp: false

设置为 false 可强制只允许 HTTPS(所有源)。

多源管理

每个工具接受可选的 source 参数(源名称或 UID)。要求助手说「staging JumpServer」时,助手会调用 jumpserver_sources 列出名称,然后传递 source。若存在多个源且无默认,省略 source 会报错而非猜测。

写工具的确认提示会显示目标源,确认与该源绑定:若默认在确认与执行之间改变,写操作会被拒绝而非发送到其他 JumpServer。

从 0.11.x 升级时,现有单源配置保持可用。首次启动时插件将其转为名为 default 的源,重用已存储的 AccessKey/SecretKey(不重新输入)。若自动转换失败,设置页显示「Legacy single-source configuration found」及「Import as a source」按钮。

权限与安全

创建 AccessKey 的 JumpServer 账号应仅对助手可见的资产拥有读权限,避免使用超级管理员账号的 Key。

安全措施:

  • AccessKeySecret 永不进入工具参数、模型消息、日志或 Git
  • 账号密码、用户密码/公钥/MFA 密钥在所有读工具返回中被逐字段排除
  • 认证请求拒绝 HTTP 重定向,避免将签名请求转发到其他源
  • 默认禁用非回环 HTTP(allowInsecureHttp)
  • 请求支持协同取消、超时和有界响应大小
  • 错误响应仅返回有界的状态/详情描述
  • id 参数在放入请求路径前校验为 JumpServer UUID,防止路径注入
  • 所有返回字段(名称、地址、评论、用户名等)均视为不可信数据,不作为模型指令

典型用法

  1. 在 DSH 中安装并配置 JumpServer 源。
  2. 让助手列出已配置源:
列出我配置的 JumpServer 源。

助手会调用 jumpserver_sources。

  1. 查询某台资产:
查看生产环境资产列表。

助手调用对应读工具。

  1. 重置用户密码(需本地确认):
重置用户 admin 的密码为 Test1234。

助手调用写工具,本地弹出确认框,用户确认后执行。

适用场景与注意

适合需要通过对话式智能体查询或管控 JumpServer 资产的用户,尤其是多源、强权限控制的运维场景。使用前请检查源码与许可证。

插件以当前 DSH 进程权限运行,请确保配置的 JumpServer 凭据权限最小化。

结尾

we39/dsh-jumpserver 将 JumpServer 的 REST API 能力接入 DSH 插件体系,通过对话实现资产查询与管控,配合本地确认与字段脱敏,适合需要精细化权限控制的运维场景。

目录页:https://www.skillhub.cn/plugins/we39/dsh-jumpserver
GitHub:https://github.com/we39/dsh-jumpserver

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye