前言¶
在 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 檢索。