前言¶
DeepSeek Harness(DSH)采用插件化架构。在本地开发或运维场景中,连接服务器通常需要维护独立的 SSH 配置文件,手动输入密码或密钥,且命令执行结果难以直接反馈给 Agent。sycada/dsh-remote-ssh-tools 是一个为 DSH 提供的 SSH 会话管理插件,它通过集中维护连接档案、提供 Agent 工具接口以及内置交互式终端,解决了远程连接与操作的安全性与效率问题。
核心功能¶
该插件提供以下主要能力:
- 连接档案管理:集中维护 SSH 档案(名称、分组、主机、端口、用户、认证方式、私钥路径、备注等),支持从界面或 Agent 调用中快速读取。
- Agent 一键执行(ssh_run):支持远程执行单条命令,可获取退出码、标准错误输出、执行耗时,并支持输出截断和超时控制。
- 交互式终端(xterm):在浏览器内提供 xterm 终端,支持窗口缩放、会话跨页面刷新保活,关闭即结束远端会话。
- 文件传输(SFTP):提供上传、下载、列表功能。下载默认开启防覆盖机制,上传支持自动创建远端目录。
- 凭据安全:密码与私钥口令仅以引用名写入 DSH 凭据中心(
~/.dsh/.credentials.yaml),档案 JSON 文件不包含任何明文密钥。密码值绝不进入进程命令行。 - 主机密钥指纹缓存:支持
accept-new和strict模式,首次连接自动记录指纹,防止中间人攻击。 - Agent 工具注入:即插即用的系统提示词,Agent 可自动识别并选用可用工具。
安装与启用¶
安装需修改 DSH profile 的 package.json 文件,通过 GitHub 引入依赖。
- 打开 DSH profile 目录下的
package.json。 - 在
dependencies中添加 GitHub 仓库链接(版本号v0.1.2):
"dependencies": {
"dsh-remote-ssh-tools": "https://github.com/Sycada/dsh-remote-ssh-tools.git#v0.1.2"
},
"dsh": { "profile": { "bundles": [ "dsh-remote-ssh-tools" ] } }
- 在 profile 目录执行
pnpm install。 - 重启 DSH。
注意:npm 上存在另一个名为
dsh-remote-ssh的包(Yan-Zero/dsh-remote-ssh,Apache-2.0),与本插件(MIT 协议,Sycada 维护)无关,安装时请确认仓库地址。
典型用法¶
安装并重启后,可在设置页或对话中调用相关功能:
- Agent 执行命令:
- 对话指令:“连生产服务器跑
df -h”,Agent 会自动选择档案执行。 - 对话指令:“用 test 档案跑
uptime”。
- 对话指令:“连生产服务器跑
- 打开终端:
- 在设置页点击“打开终端”。
- 或让 Agent 执行
ssh_session_open后调用sidebar_open将终端页嵌入侧边栏。
- 文件传输:
- 让 Agent 执行
ssh_sftp_upload、ssh_sftp_download或ssh_sftp_list。
- 让 Agent 执行
Agent 工具清单¶
插件向 Agent 提供以下工具(共 13 个):
ssh_profile_list / add / update / remove:档案的增删改查。ssh_profile_test:连通性及认证探测。ssh_secret_status:报告凭据引用状态(不显示值)。ssh_run:远程单条命令执行。ssh_session_open / list / close:交互会话管理。ssh_sftp_list / upload / download:SFTP 文件操作。
系统要求与限制¶
- 环境要求:依赖 DSH >= 0.1.1-rc.1,Node.js >= 20。
- Agent 转发:SSH Agent 转发(
ssh -A)在 v0.1 版本的交互引擎中暂不支持。 - 网络功能:连跳板机与端口转发功能规划中(预计 v0.2+)。
总结¶
该插件通过将 SSH 档案管理与 DSH 凭据中心集成,实现了远程操作的标准化与安全化。它适用于需要在对话流中直接执行远程命令、管理多服务器连接或进行文件传输的开发与运维场景。完整文档与源码可参考 GitHub 仓库。