dsh-ssh-bridge: 本地 SSH 桥接插件

前言

在使用 DeepSeek Harness (DSH) 进行智能体开发时,执行远程 SSH 命令通常需要预设主机配置或暴露登录凭据。dsh-ssh-bridge 插件提供了一个本地桥接方案:通过浏览器界面输入目标主机与密码,建立加密通道;Agent 则通过本机的 localhost API 执行远端命令。该插件不依赖特定 SSH 目标,支持独立运行,密码全程仅存在于进程内存中。

核心功能

  • 本地 SSH 桥接服务
  • 浏览器页面输入密码建立连接
  • Agent 通过 router_exec 等工具调用远端命令
  • 支持任意 SSH 目标(无需预设主机)
  • 独立于 DSH 可独立运行
  • 端口自动顺延
  • 随机 token 认证

部署与启用

安装插件

通过 DSH 插件命令安装:

dsh plugin --profile web add dsh-ssh-bridge

依赖与环境

  • DSH 版本:需 DSH 0.1.0-rc 系列
  • Node.js:≥ 18
  • pnpm:依赖安装工具(由 dsh plugin 转发)

pnpm 11 兼容性说明

若使用 pnpm 11,默认会拦截 ssh2 和 cpu-features 的原生构建脚本(node-gyp),导致安装失败。需在对应 profile 的 pnpm-workspace.yaml 中放行:

allowBuilds:
  cpu-features: true
  ssh2: true

独立运行(可选)

桥接核心不依赖 DSH,可直接运行:

npm install
npm start

启动后访问 http://127.0.0.1:23991(端口被占用时自动顺延)。

典型用法

1. 浏览器交互

  1. 打开 http://127.0.0.1:23991。
  2. 输入目标主机(格式 user@host[:port])与密码,点击「连接」。
  3. 状态变为「已连接」后,下方输入框即为目标主机的交互终端。
  4. 输入 exit 可结束整个 SSH 会话,或点击「断开连接」按钮。

2. API 调用

服务启动时会生成随机 token。Agent 可通过以下接口与桥接服务通信:

  • 认证:POST /api/auth (参数: {password, target?})
  • 执行命令:POST /api/exec (参数: {cmd, token},返回 {code, stdout, stderr})
  • 写入终端行:POST /api/input (参数: {line, token})
  • 断开连接:POST /api/disconnect (参数: {token})
  • 重连:POST /api/reconnect (参数: {token})

3. DSH 工具调用

插件加载后,Agent 可在 scoped 层直接调用以下工具:
* router_exec:执行远端命令
* router_disconnect:断开连接
* router_reconnect:复用凭据重新连接

注意事项

  • 安全限制:服务仅监听 127.0.0.1,外部网络无法访问。
  • 凭据安全:密码仅存于进程内存,不打印、不落盘。
  • Token 限制:调用 API 需携带启动日志中的 token,token 仅限本机有效。
  • 端口冲突:端口被占用时自动顺延,具体端口以启动日志为准。

总结

dsh-ssh-bridge 解决了在 DSH 环境下安全调用远程 SSH 的痛点,通过浏览器认证和本地 API 调用,实现了无预设主机的通用 SSH 访问能力。代码托管在 GitHub,许可证为 MIT。

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

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

小夜