dsh-ssh-helper:個人服務器運維的 SSH 連接池與安全護欄

前言

在 DeepSeek Harness(DSH)裏用 AI 維護個人服務器時,常見情況是:每條遠程命令都要重新 SSH 握手,排查節奏被打斷;大段日誌一次性塞進主會話,上下文很快被佔滿;讓 AI 裝軟件或改配置時,又擔心誤執行 rm -rf /、格式化塊設備之類會讓整臺機器報廢的操作;不同對話之間 shell 的 cd 和環境變量還會互相污染。社區插件 dsh-ssh-helper(維護者 bcdws,分類 admin-security)把連接、文件與日誌操作收進常駐 SSH 池,並在保留日常維護權限的前提下,只攔截會導致「整機報廢」的命令。下面介紹它是什麼、能做什麼,以及如何安裝與使用。

這是什麼

dsh-ssh-helper 是面向個人服務器運維的 DSH 插件:提供 SSH 連接池、一組 SSH 相關 AI 工具,以及針對「毀機」類命令的單層護欄。倉庫地址:https://github.com/bcdws/dsh-ssh-helper;社區目錄頁:https://www.skillhub.cn/plugins/bcdws/dsh-ssh-helper。插件以 MIT 許可證發佈,當前 package 版本爲 0.5.0,依賴 DSH 引擎 >=0.2.1-rc.2 <0.3.0,底層 SSH 實現使用 ssh2。

認證方式爲 key-only:使用本機 SSH key / agent,不支持密碼登錄,也不存儲私鑰。

核心功能

連接複用與可維護的主機列表

每臺主機維持一個 SSH 連接,後續命令不再重複握手;斷線會自動重連。握手連續超時後會暫停自動重連;SFTP 建鏈最多等待 15 秒,失敗會明確報錯,避免掛住會話。

面板可自動刷新 ~/.ssh/config:Host 名與密鑰文件名可在彈窗中修改。Host 只改 Host 行;密鑰會真實重命名(含 .pub)並更新引用;一次提交只寫一次配置,失敗則不寫入。

安全護欄

這不是沙箱,而是防手滑的「安全帶」:只攔截 6 類會讓整臺機器報廢的操作。業務目錄(如 /srv、/home、/opt、/var/www、/data)上的刪除與普通維護不在攔截範圍內。計劃模式下會拒絕刪除類 ssh_run;本地 bash 直連 SSH 的刪除也會被攔截。命令匹配針對 shell 文本;腳本內部或通過文件工具寫入 /etc 等路徑不在同一層判斷。真正隔離仍應依賴受限賬號、備份與最小權限。

日誌旁路分析

可選開關,默認關閉。開啓後,大日誌先脫敏,再交給沒有工具的旁路模型做摘要,主會話只收到摘要。敏感日誌建議保持關閉。

會話隔離與面板

Shell 會話按 agent + session 名隔離;連接共享,但 cd 與環境變量不會在會話間串擾。面板可查看連接狀態、隱藏主機、輸出上限與旁路開關,並保留最近 50 條脫敏診斷事件。主機可在面板設爲「隱藏」:隱藏後 AI 看不到也連不上,面板仍可管理。

AI 工具一覽

工具 用途
ssh_hosts 列主機、連接狀態、最後錯誤
ssh_run 執行命令;支持持久 session
ssh_read / ssh_grep 讀文件、搜內容
ssh_write / ssh_edit 寫新文件 / 精確改現有文件
ssh_glob 按文件名/路徑找文件
ssh_transfer 上傳/下載單個文件

安裝與啓用

前置條件:已安裝 DSH、Node.js、Git,且能在 ~/.ssh/config 中看到目標主機。

在本地克隆倉庫並 link 到當前 profile:

git clone https://github.com/bcdws/dsh-ssh-helper.git
cd dsh-ssh-helper
npm install
dsh plugin --profile <profile> add "link:$PWD"

PowerShell 下最後一行改爲:

dsh plugin --profile <profile> add "link:$((Get-Location).Path)"

若 dsh 不在 PATH,請使用 DSH 自帶的 CLI 路徑,不要猜測。裝好後確認:

dsh plugin --profile <profile> list

當 ssh_hosts 相關條目裏出現 [policy] 時,說明插件已加載。

也可以把 README 中的「讓 AI 自己安裝」整段提示詞發給 DSH 內的 AI,由它在不修改 ~/.ssh/config、不連服務器的前提下完成 clone、npm install 與 dsh plugin add link:...;profile 或 CLI 路徑不明確時應先向用戶確認。

典型用法

先在 ~/.ssh/config 配好主機與 IdentityFile,然後用自然語言對 AI 說明意圖即可,無需點名具體工具。README 中的示例包括:

幫我看看有哪些服務器
查一下 server-a 最近 10 分鐘的日誌
檢查一下 server-a 的健康狀態
幫我在 server-b 上安裝這個本地 deb 包

經過上面的步驟,AI 會通過連接池與上表工具在對應主機上執行操作。

適用場景與注意

適合已在 DSH 中用 AI 做個人 VPS、 homelab 或少量生產機日常運維、且希望減少重複握手、控制日誌上下文、並多一層「毀機命令」攔截的開發者。DSH 生態理念是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

務必注意:插件以當前 DSH 進程的權限在本機運行,遠程操作仍受你 SSH 賬號在服務器上的權限約束。安裝前應閱讀倉庫源碼與 MIT 許可證,自行評估是否滿足安全要求。護欄不能替代賬號隔離與備份策略。

維護者提供的離線測試(無需真實服務器):

npm install
node test/run.mjs --offline

結尾

dsh-ssh-helper 把 SSH 連接池、文件/日誌工具與有限的毀機命令護欄合在一起,方便在 DSH 裏用自然語言運維個人服務器,同時儘量保留日常維護自由度。更多信息見社區目錄 https://www.skillhub.cn/plugins/bcdws/dsh-ssh-helper 與 GitHub https://github.com/bcdws/dsh-ssh-helper。

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

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

小夜