前言¶
在使用 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. 浏览器交互¶
- 打开
http://127.0.0.1:23991。 - 输入目标主机(格式
user@host[:port])与密码,点击「连接」。 - 状态变为「已连接」后,下方输入框即为目标主机的交互终端。
- 输入
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。