前言¶
在 DSH(DeepSeek Harness)裏做運維類對話時,常見做法是複製粘貼終端輸出,或在本地再開一條 SSH 會話手工執行。模型無法直接在你已經納管的那幾臺機器上查狀態、看日誌、跑腳本,來回切換成本高,也容易漏掉執行痕跡。
dsh-server-connector 是社區插件:在本機配置好可 SSH 登錄的服務器後,Harness 裏的 agent 可通過 srv_* 工具在對應機器上執行命令;並配套高危命令策略、逐條審批、執行審計與兩段式危險操作確認。下面按安裝、面板配置、agent 調用與策略審計說明用法。
這是什麼¶
- 名稱與維護者:npm 包名
dsh-server-connector,倉庫 niechao136/dsh-server-connector,維護者 niechao136。 - 形態:Host 側提供
srv_*工具、連接池、策略與審計;Client 側在 Web 界面註冊側邊欄「服務器」面板與設置頁。 - 數據目錄:
$DSH_HOME/server-connector/($DSH_HOME默認~/.dsh)。 - 運行要求(見倉庫 README 與
package.json):DSH>=0.1.0-rc.6 <0.3.0,Node^22.19.0 || >=24.0.0。
插件不做文件上傳/SFTP、端口轉發、跳板機、Kerberos;策略定位爲遏制而非唯一安全邊界,遠端仍應使用低權限用戶與 sudo 白名單等硬約束。
核心功能¶
| 能力 | 說明 |
|---|---|
| 遠程執行 | 模型調用 srv_exec(server, command),經連接池執行,返回 exitCode、stdout、stderr |
| 高危攔截 | 20 條內置規則:block 拒絕、confirm 彈審批、allow 直接執行 |
| 審計 | 每次 srv_exec 寫入 audit.log(JSON 行),面板可查看最近 20 條 |
| 長任務 | 超過同步窗口轉後臺 job,用 srv_job_output 增量讀、srv_job_kill 取消 |
| 危險配置緩釋 | 刪服務器、關閉主機密鑰校驗等先進「待確認」,確認後才生效 |
向 agent 暴露的工具共 6 個:srv_list、srv_connect、srv_exec、srv_job_output、srv_job_kill、srv_policy_check。有已啓用服務器時,系統提示會附上服務器清單;不做會話綁定,每次調用須顯式傳 server(支持 id、名稱或唯一前綴)。
安裝與啓用¶
日常 Web 使用推薦 npm 安裝(--profile 指定 profile,Web 界面爲 web):
dsh plugin --profile web add dsh-server-connector
指定版本示例(README 原文):
dsh plugin --profile web add dsh-server-connector@0.1.0
國內若版本滯後或安裝失敗,可指定官方 npm 源:
dsh plugin --profile web add --registry=https://registry.npmjs.org/ dsh-server-connector
也可從 GitHub Release 的 .tgz、源碼 github:niechao136/dsh-server-connector、本地路徑或 Web 界面「插件 → 添加插件」安裝。裝完後可用下面命令確認 bundle 已納入:
dsh --profile web --dump-config | grep -A2 dsh-server-connector
卸載:
dsh plugin --profile web remove dsh-server-connector
裝完若側邊欄沒有「服務器」,重啓一次 dsh web。插件以當前 DSH 進程權限運行,安裝前宜自行查看源碼與許可證。
五分鐘上手¶
- 左側欄打開 服務器,點 新增,填寫名稱、主機、端口、用戶名與認證方式(私鑰路徑須爲本機可讀絕對路徑;密碼存入 DSH 憑據服務;SSH agent 認證目前連接會
AUTH_FAILED,需 agent 時請改用私鑰)。 - 列表點 測試,顯示「已連接」即表示連通(探測項可能顯示
unknown,屬已知缺陷)。 - 在對話中讓 agent 明確機器名,例如:在「生產機-A」上執行
df -h /。插件會把server解析爲 id → 名稱 → 唯一前綴。
啓用/禁用:禁用後 srv_list 不再返回該服務器,任意 srv_* 返回 SERVER_DISABLED;已連接時不能禁用,需先斷開。
Agent 工具與典型調用¶
預檢高危命令(不連接、不執行):
srv_policy_check(server, command) → allow / confirm / block
執行命令:
srv_exec(server, command, cwd?, timeoutMs?, async?)
命中 block 時 srv_exec 直接拒絕,不會向服務器發送命令;confirm 走審批。rm -rf 等命中內置 rm-recursive 規則時,返回中會標明規則 id 與建議(改策略或改寫法)。
長命令異步示例返回形態:
started background job ssh-… on srv-01 (生產機-A)
Read it with srv_job_output, stop it with srv_job_kill.
高危命令策略與審批¶
內置 20 條規則覆蓋遞歸刪除、dd 寫盤、庫表 DROP、關機重啓、系統路徑 chmod/chown、服務重啓等(完整列表見倉庫 README)。每臺服務器可在表單中爲每條規則設置 allow / confirm / block /「停用」;內置 block 規則不可直接改爲 allow,只能降爲 confirm。
刪除服務器、將主機密鑰策略改爲 off、停用某條規則等改動寫入待確認區,在詳情或待確認流程中確認後才生效。刪服務器在詳情頁需勾選確認後再點「確認刪除」。
適用場景與注意¶
適合:已在 DSH Web 中做智能體運維,希望 agent 在少數固定 SSH 目標上只讀查狀態、跑腳本,並需要策略攔截與審計留痕的團隊或個人。
注意:
- 不支持帶 passphrase 的私鑰(請用無口令部署密鑰)。
- 策略不能替代遠端賬號權限設計。
- 審計與配置落在本機
$DSH_HOME/server-connector/,憑據由 DSH 憑據服務管理。
設計細節(數據模型、實現取捨)見倉庫內 docs/design.md。
結尾¶
dsh-server-connector 把「本機已登記的 SSH 服務器」變成 agent 可調用的 srv_* 工具面,並把高危命令與危險配置變更攔在策略與兩段式確認之後。插件目錄頁:SkillHub - dsh-server-connector;源碼與文檔:GitHub - niechao136/dsh-server-connector。