前言¶
在 DeepSeek Harness(DSH)里让 agent 处理远程机器上的事,常见做法是每次口述主机地址、用户和认证方式,或把连接细节写进对话上下文。主机一多、密钥和密码混用,既难维护,也容易把敏感信息带进聊天记录。
dsh-ssh-panel 是面向 DSH web profile 的客户端插件:在 设置 → SSH 主机 面板里集中维护主机(密钥或密码),并通过 agent 工具 ssh_list、ssh_exec 按别名执行命令。密码与密钥口令留在宿主进程,不通过工具返回值外泄。
这是什么¶
维护者为 MARYCOMPLEX,社区分类为客户端。当前 npm 包版本为 0.1.1,许可证 MIT。
插件由两块组成:
- 设置 UI:添加、编辑、测试、删除 SSH 主机;支持每主机端口、用户、备注,以及密钥路径或密码认证。
- Agent 工具:
ssh_list列出已配置主机(别名、地址、用户、认证类型,不含密钥);ssh_exec按别名执行一条命令,返回 stdout、stderr 与退出码。
主机配置持久化在 $DSH_HOME/ssh-hosts.json,文件权限 0600。面向前端的 JSON 接口只暴露 hasPassword / hasPassphrase,不返回明文密码或口令。README 说明无遥测。
面板还提供 「重启 DSH」:触发宿主进程退出,由 systemd 的 Restart=always 重新拉起(约三秒),页面轮询恢复后自动刷新。
核心功能¶
设置面板¶
路径:设置(齿轮)→ SSH 主机。可对每台主机配置:
- 别名(如
vps) - 地址、端口、用户名
- 私钥路径或密码
- 备注
保存前可用 测试 校验连通性。
Agent 工具¶
| 工具 | 参数 | 返回 |
|---|---|---|
ssh_list |
— | 主机 JSON 列表(不含密钥) |
ssh_exec |
host、command,可选 timeout_ms |
stdout、stderr、退出码;输出超过 256 KiB 会截断 |
典型调用链:agent 先 ssh_list 解析别名,再对目标主机 ssh_exec 执行命令。
依赖与运行环境¶
README 写明在 DSH 0.2.1-rc.2(web profile)上验证;Node.js 需 ≥ 22。依赖 ssh2 1.17.0。
安装与启用¶
下面命令来自项目 README,安装后需重启一次 dsh web。
从 GitHub 安装:
dsh plugin --profile web add github:MARYCOMPLEX/dsh-ssh-panel
或使用本地打包的 tarball:
pnpm pack
dsh plugin --profile web add ./dsh-ssh-panel-0.1.1.tgz
ssh2 可能编译可选的 native crypto binding。若使用 pnpm 12 且安装报 ERR_PNPM_IGNORED_BUILDS,在 $DSH_HOME/profiles/web/pnpm-workspace.yaml 增加:
allowBuilds:
ssh2: true
cpu-features: true
然后重新执行安装。README 注明不编译也可使用,ssh2 有纯 JS 回退。
典型用法¶
- 打开 设置 → SSH 主机 → 添加主机,填写别名、地址、端口、用户名,以及私钥路径或密码。
- 点击 测试 验证,再 保存。
- 在对话中让 agent 操作远程机,例如:「去 vps 上看看磁盘」。agent 会通过
ssh_list找到vps,再ssh_exec执行相应命令。
适用场景与注意¶
适合:已在 DSH web 环境跑 agent,需要把多台 SSH 主机配置成稳定别名,由 agent 查列表、远程跑单条命令(查磁盘、看日志、执行维护脚本等),且希望密钥与密码不进对话明文。
注意:
- 插件以当前 dsh 宿主进程 的权限运行;
ssh_exec在目标机上执行的命令,等价于该进程发起的 SSH 会话。安装前应阅读源码与 MIT 许可证,确认符合你的安全策略。 - 仅适用于 README 所述的
webprofile 与版本要求;社区目录 SkillHub 插件页 与 GitHub 仓库独立维护,与 DeepSeek / 幻方无官方从属关系。 - 「重启 DSH」面向由 systemd
Restart=always托管的部署;其他启动方式需自行确认重启行为。
结尾¶
dsh-ssh-panel 把 SSH 主机维护放进 DSH 设置,用 ssh_list / ssh_exec 把「按别名远程执行」接到 agent 工具链上,并尽量把密钥与密码留在本机进程内。