DSH 的設計理念是“一切皆插件”。在智能體開發或運維場景中,經常需要通過 SSH、Telnet 或 WinRM 執行命令、傳輸文件。dsh-remote-shell 是一個 DSH 插件,它將 remote-shell 技能打包在一起,提供安全的遠程操作能力。
定義與定位¶
這是一個由 wutian122 維護的 DSH 插件(MIT 許可證)。它解決了在 DSH 環境中直接進行遠程系統管理的問題,集成了 SSH、SFTP、Telnet 和 WinRM 協議支持,並內置了基於 Fernet + PBKDF2-HMAC-SHA256 的加密憑據庫。
核心功能¶
該插件提供的技能包含以下能力:
1. 遠程命令執行:支持 SSH、WinRM、Telnet 協議。支持單條命令、批量執行、腳本執行、遠程系統信息查詢和健康檢查。
2. SFTP 文件傳輸:提供上傳、下載和目錄列表功能。
3. 加密憑據庫:登錄腳本不接受明文密碼。憑據始終從加密庫中讀取。可以使用 credctl 工具進行憑據的增刪改查。
4. 安全攔截:默認攔截可能發生變更的命令,只有顯式使用 --auto-confirm 標誌後纔會執行。
安裝與啓用¶
從 npm 註冊表安裝:
dsh plugin --profile web add dsh-remote-shell
從本地代碼庫安裝(用於開發或測試):
dsh plugin --profile web add /path/to/dsh-remote-shell
安裝後,需要重啓 dsh web 才能使插件生效。技能在技能目錄中顯示爲 remote-shell(提供者 dsh-remote-shell,來源 bundled)。
工作原理¶
dsh-remote-shell 是一個 Cordis 插件,它注入了一個 skills provider。插件加載時會掃描 skills/ 目錄中的 SKILL.md 文件,解析 YAML frontmatter,並將技能註冊到主註冊表(rank 600,來源 bundled)。
該 provider 是不可變的,不執行文件監視或輪詢。如果存在缺失或格式錯誤的技能,它會優雅降級(跳過該技能,不拋出錯誤)。
安全與注意事項¶
- 代碼執行風險:安裝此插件會在本地機器上運行第三方代碼。
- 憑據管理:憑據庫的主密碼由用戶自己管理,插件不會存儲或傳輸該主密碼。
- 行尾格式:
SKILL.md被鎖定爲 LF(\n)行尾。因爲提供者對 frontmatter 的檢測需要精確的---行,CRLF 檢出會導致提供者跳過該技能。
依賴與開發¶
技能腳本使用 Python 3 編寫。首次使用時,需要按照 SKILL.md 中的說明安裝第三方庫,例如 paramiko(用於 SSH/SFTP)和 pywinrm(用於 WinRM)。
運行單元測試(使用 Node.js 內置測試運行器):
node --test
適用場景與資源¶
該插件適合需要在 DSH 中實現自動化遠程運維、跨平臺命令執行或文件傳輸的場景。
- 插件目錄頁
- GitHub 倉庫