jumpserver-dsh:通过 JumpServer 与 KoKo 操作资产的 DeepSeek Harness 插件

前言

在 DeepSeek Harness(DSH)里,如果 agent 需要连接生产或测试资产,常见做法是直接 SSH 到资产 IP。这样做简单,但很难把命令过滤、ACL 和会话审计统一保留在 JumpServer 这一侧。

jumpserver-dsh 解决的是这个问题:让 agent 通过 JumpServer 管理资产,并经过 KoKo 堡垒在资产上执行命令或读写文件。流量不直连资产 IP,JumpServer 的命令过滤、ACL 和会话审计仍然生效。

这是什么

jumpserver-dsh 是一个 DeepSeek Harness 插件,包名为 @jumpserver-east/jumpserver-dsh,仓库位于 jumpserver-east/jumpserver-dsh

它把 JumpServer 的资产、账号、连接、命令执行和数据库操作包装成 jms_* 工具,供 DSH agent 调用。当前能力主要面向 SSH / SFTP 主机,以及经 KoKo 的数据库(MySQL、MariaDB、PostgreSQL、Redis、MongoDB、Oracle、SQL Server 等)。

RDP / 图形协议不在范围内。

核心功能

  • 让 agent 通过 JumpServer 管理资产,并经 KoKo 在资产上执行命令 / 读写文件。
  • 支持 SSH / SFTP 主机,以及经 KoKo 的数据库。
  • 流量不直连资产 IP,命令过滤、ACL、会话审计仍然生效。
  • 默认提供连接、执行、SQL、文件读写、会话管理等工具。
  • JUMPSERVER_ENABLE_ASSET_ADMIN=true 时额外提供主机资产创建 / 更新 / 删除工具,请求仍走 Core RBAC,也不会绕过 KoKo。
  • 未授权时数据库会话只能查询;INSERT / UPDATE / DELETE 等写操作需要显式打开 JUMPSERVER_ENABLE_DB_WRITE

安装与启用

安装

从 npm 安装:

dsh plugin --profile web add @jumpserver-east/jumpserver-dsh

如果 pnpm 11 遇到刚发布不足约 24 小时的包被拒绝,可能需要等待发布年龄满足要求,或按仓库说明配置 minimumReleaseAge。GitHub 安装场景还可能涉及 allowBuilds 配置。

不要使用 Homebrew 的 dsh 配方,那是另一个 Unix 工具。

配置

$DSH_HOME 下新建 .env。dsh 主目录默认:

  • macOS / Linux:~/.dsh
  • Windows:%USERPROFILE%\.dsh

示例:

JUMPSERVER_URL=https://jms.example.com
JUMPSERVER_ORG_ID=00000000-0000-0000-0000-000000000002
JUMPSERVER_ACCESS_KEY_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
JUMPSERVER_ACCESS_KEY_SECRET=********************************
JUMPSERVER_ENABLE_ASSET_ADMIN=false
JUMPSERVER_ENABLE_DB_WRITE=false

JUMPSERVER_ORG_ID 不写则使用 JumpServer 的 Default 组织。

JUMPSERVER_ENABLE_ASSET_ADMIN 默认 false,只能列出、连接该 Access Key 已有权限的资产。设为 true 会额外注册:

  • jms_list_platforms
  • jms_create_host
  • jms_update_host
  • jms_delete_host

这些请求仍走 Core RBAC,也不会绕过 KoKo。没有主机管理权限时保持 false

JUMPSERVER_ENABLE_DB_WRITE 默认 false,数据库会话只允许查询。设为 true 才允许 INSERT / UPDATE / DELETE 等写语句。JumpServer 自己的命令过滤仍然生效。没有写库授权时保持 false

dsh 的这台机器要能连上 JumpServer Core(HTTPS)和 KoKo SSH。KoKo 的地址和端口会从 connection-token 自动带出。

启动

写好 .env 后重启 web profile:

dsh --profile web

典型用法

在对话里用自然语言即可,不必写工具名。例如:

查看我当前 JumpServer 可连接的资产有哪些

或:

先确认 JumpServer 登录,再列出我能连的资产;连上 xxx 执行 hostname,然后断开。

agent 会按需调用 jms_* 工具。不要让 agent 直接 SSH 资产 IP。

典型顺序:

1、jms_list_assets 列出资产
2、jms_list_accounts 列出账号
3、jms_connect 连接
4、jms_exec / jms_sql 执行命令或查询
5、jms_disconnect 断开

查数据库时,用 jms_list_assetscategory=database

默认工具

默认提供:

  • jms_whoami — 确认当前 API 用户
  • jms_list_assets — 列出资产
  • jms_get_asset — 查看资产
  • jms_list_accounts — 列出账号
  • jms_list_nodes — 列出节点
  • jms_connect — 创建 connection-token,并经 KoKo 建会话
  • jms_exec — 在主机上执行命令
  • jms_sql — 在已就绪的数据库会话上执行 SQL / Redis / Mongo 命令
  • jms_read_file — 经 KoKo 读取文件
  • jms_write_file — 经 KoKo 写入文件
  • jms_list_sessions — 列出会话
  • jms_disconnect — 断开会话

jms_exec 用于主机命令,不要用它跑数据库 SQL。jms_sql 用于数据库会话。jms_read_file / jms_write_file 仅主机会话,经 KoKo 做 SFTP。

兼容性与注意

  • Core 与 KoKo 须为同一发行版本。
  • 支持 JumpServer v3.10 LTS(v3.10.0 ~ 当前 v3.10.22)、v4.10 LTS(v4.10.0 ~ 当前 v4.10.18)。
  • 支持 DeepSeek Harness >= 0.1.0-rc.6;资料标注为开发预览,接口可能变化。
  • RDP / 图形协议不在范围内。
  • 未授权时数据库会话只能查询;写操作需要显式打开 JUMPSERVER_ENABLE_DB_WRITE
  • JUMPSERVER_ENABLE_ASSET_ADMIN 默认关闭;开启后主机管理请求仍走 Core RBAC,也不会绕过 KoKo。
  • GitHub 安装可能需要配置 allowBuildsminimumReleaseAge;pnpm 11 可能拒绝刚发布不足约 24 小时的包。
  • 不要用 Homebrew 的 dsh 配方,那是另一个 Unix 工具。
  • 插件以当前 dsh 进程权限运行。安装前建议检查源码、依赖和网络凭据;许可证为 MIT。

结尾

jumpserver-dsh 的价值在于:它把 agent 对资产的访问路径收进 JumpServer / KoKo 的既有管控链路里,保留命令过滤、ACL 和会话审计。

仓库:jumpserver-east/jumpserver-dsh。如果你使用 DSH 插件目录,可按包名 @jumpserver-east/jumpserver-dsh 检索。

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

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

Xiaoye