前言¶
在 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_platformsjms_create_hostjms_update_hostjms_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_assets 加 category=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 安装可能需要配置
allowBuilds和minimumReleaseAge;pnpm 11 可能拒绝刚发布不足约 24 小时的包。 - 不要用 Homebrew 的
dsh配方,那是另一个 Unix 工具。 - 插件以当前 dsh 进程权限运行。安装前建议检查源码、依赖和网络凭据;许可证为 MIT。
结尾¶
jumpserver-dsh 的价值在于:它把 agent 对资产的访问路径收进 JumpServer / KoKo 的既有管控链路里,保留命令过滤、ACL 和会话审计。
仓库:jumpserver-east/jumpserver-dsh。如果你使用 DSH 插件目录,可按包名 @jumpserver-east/jumpserver-dsh 检索。