DeepSeek Harness 插件:dsh-ssh-tunnel

前言

在 DeepSeek Harness (DSH) 的開發場景中,智能體往往需要訪問遠程服務器進行部署、調試或數據交互。dsh-ssh-tunnel 是一個社區插件,旨在解決多主機 SSH 訪問的權限管理、會話維護和交互界面問題。它爲 dsh-better-sidebar 提供了 SSHManager 工具,並實現了多主機隧道管理。

插件定位

  • 名稱:dsh-ssh-tunnel
  • 類型:DeepSeek Harness 社區插件
  • 維護者:thirsty5034
  • 定位:多主機 SSH 隧道 + SSHManager 工具
  • 兼容性:面向 dsh-better-sidebar (>= 0.12)

核心功能

該插件提供了一套完整的 SSH 管理機制,核心能力如下:

  1. 主機清單與密鑰管理:在本地維護主機清單(hosts.json)和密鑰(secrets.json)。這些敏感信息不會暴露給模型,僅用於插件內部處理。
  2. 項目範圍授權:支持基於項目的權限控制。通過 projectPathKey(通常爲工作區目錄)關聯可訪問的主機列表,實現細粒度的訪問控制。
  3. 模型工具 SSHManager:爲模型提供標準化的工具接口。支持 exec(執行命令)、sftp_list(列出文件)等操作,並支持會話策略(如複用或新建會話)。
  4. 側邊欄管理:提供側邊欄選項卡,用於管理主機 CRUD、項目授權以及會話的連接/斷開。
  5. 交互式界面:在中心覆蓋層提供交互式終端(基於 xterm)和雙面板 SFTP 文件管理界面。
  6. 非侵入式設計:插件不嘗試用單一遠程磁盤替換全局的 fs 或 subprocess,保持 DSH 原有的文件系統架構。

安裝與啓用

安裝建議通過 CLI 官方源進行,確保版本與 DSH 環境匹配。

export DSH_HOME=${DSH_HOME:-$HOME/.dsh}
dsh plugin --profile web add "dsh-ssh-tunnel@github:thirsty5034/dsh-ssh-tunnel"

安裝完成後,需要重啓 DSH Web 進程,並在瀏覽器中執行硬刷新(Ctrl+Shift+R 或 Cmd+Shift+R)以加載新的插件界面。

典型用法

模型通過調用 SSHManager 工具與遠程主機交互。以下是標準的工具調用示例:

  • 列出所有主機:
    SSHManager action=list_hosts
  • 在指定主機執行命令:
    SSHManager action=exec host_id=<id> command="uname -a"
  • 通過 SFTP 列出目錄:
    SSHManager action=sftp_list host_id=<id> path=/

會話策略:
在調用工具時,可以通過參數指定會話策略:
* reuse_or_create:默認策略,嘗試複用已存在的會話,失敗則新建。
* new:強制新建會話。
* require_existing:僅使用已存在的會話,不存在則報錯。
* session_id:顯式指定會話 ID。

數據與安全

插件的數據存儲在 $DSH_HOME/ssh-tunnel/ 目錄下(權限爲 0700):

  • hosts.json:存儲主機元數據。
  • secrets.json:存儲密碼、PEM 私鑰或短語(權限 0600)。
  • grants.json:存儲項目路徑到主機 ID 列表的映射。
  • known_hosts.json:存儲已驗證的主機密鑰指紋(SHA256 十六進制格式)。

安全限制:
* 認證方式:僅支持密碼或私鑰認證。鍵盤交互 認證已廢棄,需編輯主機配置改用密碼或私鑰。不支持 Bastion Web MFA。
* 文件路徑限制:本地上傳/下載/列表操作限制在 /workspace 目錄,且進行詞法路徑檢查和 realpath 檢查,拒絕符號鏈接。
* API 安全:HTTP API 僅監聽本地迴環地址,且依賴 trusted-hosts 配置。瀏覽器 Origin 必須與配置匹配,會話 API 必須提供 projectPathKey。
* 密鑰輪換:如果懷疑 secrets.json 泄露,應立即輪換密鑰。

注意事項

  1. 不替換全局文件系統:插件提供的是會話級和工具級的 SSH 訪問,不會改變 DSH 的全局文件系統權限模型。
  2. 依賴環境:確保 DSH Web 配置了 dsh-better-sidebar (>= 0.12) 且 Node.js 版本爲 18+。
  3. 會話保活:插件內置了 ssh2 keepalive 機制(30秒間隔),意外掉線後會自動嘗試重連,最多重試 3 次。
  4. 前端依賴:終端依賴的 @xterm/xterm@5.5.0 和 @xterm/addon-fit@0.11.0 通過同源路由加載,無 CDN 回退機制。

總結

dsh-ssh-tunnel 爲 DSH 生態提供了一套標準化的 SSH 管理方案,通過項目級授權和模型工具接口,解決了多主機遠程操作的安全性和易用性痛點。開發者在配置好主機清單和密鑰後,可直接在對話中使用 SSHManager 工具進行操作。

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

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

小夜