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_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 檢索。

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

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

小夜