dsh-ssh-panel:在 DSH 设置里管 SSH 主机,让 Agent 用 ssh_list / ssh_exec 远程执行

前言

在 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 回退。

典型用法

  1. 打开 设置 → SSH 主机 → 添加主机,填写别名、地址、端口、用户名,以及私钥路径或密码。
  2. 点击 测试 验证,再 保存。
  3. 在对话中让 agent 操作远程机,例如:「去 vps 上看看磁盘」。agent 会通过 ssh_list 找到 vps,再 ssh_exec 执行相应命令。

适用场景与注意

适合:已在 DSH web 环境跑 agent,需要把多台 SSH 主机配置成稳定别名,由 agent 查列表、远程跑单条命令(查磁盘、看日志、执行维护脚本等),且希望密钥与密码不进对话明文。

注意:

  • 插件以当前 dsh 宿主进程 的权限运行;ssh_exec 在目标机上执行的命令,等价于该进程发起的 SSH 会话。安装前应阅读源码与 MIT 许可证,确认符合你的安全策略。
  • 仅适用于 README 所述的 web profile 与版本要求;社区目录 SkillHub 插件页 与 GitHub 仓库独立维护,与 DeepSeek / 幻方无官方从属关系。
  • 「重启 DSH」面向由 systemd Restart=always 托管的部署;其他启动方式需自行确认重启行为。

结尾

dsh-ssh-panel 把 SSH 主机维护放进 DSH 设置,用 ssh_list / ssh_exec 把「按别名远程执行」接到 agent 工具链上,并尽量把密钥与密码留在本机进程内。

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

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

Xiaoye