前言¶
在 DSH(DeepSeek Harness)里做运维类对话时,常见做法是复制粘贴终端输出,或在本地再开一条 SSH 会话手工执行。模型无法直接在你已经纳管的那几台机器上查状态、看日志、跑脚本,来回切换成本高,也容易漏掉执行痕迹。
dsh-server-connector 是社区插件:在本机配置好可 SSH 登录的服务器后,Harness 里的 agent 可通过 srv_* 工具在对应机器上执行命令;并配套高危命令策略、逐条审批、执行审计与两段式危险操作确认。下面按安装、面板配置、agent 调用与策略审计说明用法。
这是什么¶
- 名称与维护者:npm 包名
dsh-server-connector,仓库 niechao136/dsh-server-connector,维护者 niechao136。 - 形态:Host 侧提供
srv_*工具、连接池、策略与审计;Client 侧在 Web 界面注册侧边栏「服务器」面板与设置页。 - 数据目录:
$DSH_HOME/server-connector/($DSH_HOME默认~/.dsh)。 - 运行要求(见仓库 README 与
package.json):DSH>=0.1.0-rc.6 <0.3.0,Node^22.19.0 || >=24.0.0。
插件不做文件上传/SFTP、端口转发、跳板机、Kerberos;策略定位为遏制而非唯一安全边界,远端仍应使用低权限用户与 sudo 白名单等硬约束。
核心功能¶
| 能力 | 说明 |
|---|---|
| 远程执行 | 模型调用 srv_exec(server, command),经连接池执行,返回 exitCode、stdout、stderr |
| 高危拦截 | 20 条内置规则:block 拒绝、confirm 弹审批、allow 直接执行 |
| 审计 | 每次 srv_exec 写入 audit.log(JSON 行),面板可查看最近 20 条 |
| 长任务 | 超过同步窗口转后台 job,用 srv_job_output 增量读、srv_job_kill 取消 |
| 危险配置缓释 | 删服务器、关闭主机密钥校验等先进「待确认」,确认后才生效 |
向 agent 暴露的工具共 6 个:srv_list、srv_connect、srv_exec、srv_job_output、srv_job_kill、srv_policy_check。有已启用服务器时,系统提示会附上服务器清单;不做会话绑定,每次调用须显式传 server(支持 id、名称或唯一前缀)。
安装与启用¶
日常 Web 使用推荐 npm 安装(--profile 指定 profile,Web 界面为 web):
dsh plugin --profile web add dsh-server-connector
指定版本示例(README 原文):
dsh plugin --profile web add dsh-server-connector@0.1.0
国内若版本滞后或安装失败,可指定官方 npm 源:
dsh plugin --profile web add --registry=https://registry.npmjs.org/ dsh-server-connector
也可从 GitHub Release 的 .tgz、源码 github:niechao136/dsh-server-connector、本地路径或 Web 界面「插件 → 添加插件」安装。装完后可用下面命令确认 bundle 已纳入:
dsh --profile web --dump-config | grep -A2 dsh-server-connector
卸载:
dsh plugin --profile web remove dsh-server-connector
装完若侧边栏没有「服务器」,重启一次 dsh web。插件以当前 DSH 进程权限运行,安装前宜自行查看源码与许可证。
五分钟上手¶
- 左侧栏打开 服务器,点 新增,填写名称、主机、端口、用户名与认证方式(私钥路径须为本机可读绝对路径;密码存入 DSH 凭据服务;SSH agent 认证目前连接会
AUTH_FAILED,需 agent 时请改用私钥)。 - 列表点 测试,显示「已连接」即表示连通(探测项可能显示
unknown,属已知缺陷)。 - 在对话中让 agent 明确机器名,例如:在「生产机-A」上执行
df -h /。插件会把server解析为 id → 名称 → 唯一前缀。
启用/禁用:禁用后 srv_list 不再返回该服务器,任意 srv_* 返回 SERVER_DISABLED;已连接时不能禁用,需先断开。
Agent 工具与典型调用¶
预检高危命令(不连接、不执行):
srv_policy_check(server, command) → allow / confirm / block
执行命令:
srv_exec(server, command, cwd?, timeoutMs?, async?)
命中 block 时 srv_exec 直接拒绝,不会向服务器发送命令;confirm 走审批。rm -rf 等命中内置 rm-recursive 规则时,返回中会标明规则 id 与建议(改策略或改写法)。
长命令异步示例返回形态:
started background job ssh-… on srv-01 (生产机-A)
Read it with srv_job_output, stop it with srv_job_kill.
高危命令策略与审批¶
内置 20 条规则覆盖递归删除、dd 写盘、库表 DROP、关机重启、系统路径 chmod/chown、服务重启等(完整列表见仓库 README)。每台服务器可在表单中为每条规则设置 allow / confirm / block /「停用」;内置 block 规则不可直接改为 allow,只能降为 confirm。
删除服务器、将主机密钥策略改为 off、停用某条规则等改动写入待确认区,在详情或待确认流程中确认后才生效。删服务器在详情页需勾选确认后再点「确认删除」。
适用场景与注意¶
适合:已在 DSH Web 中做智能体运维,希望 agent 在少数固定 SSH 目标上只读查状态、跑脚本,并需要策略拦截与审计留痕的团队或个人。
注意:
- 不支持带 passphrase 的私钥(请用无口令部署密钥)。
- 策略不能替代远端账号权限设计。
- 审计与配置落在本机
$DSH_HOME/server-connector/,凭据由 DSH 凭据服务管理。
设计细节(数据模型、实现取舍)见仓库内 docs/design.md。
结尾¶
dsh-server-connector 把「本机已登记的 SSH 服务器」变成 agent 可调用的 srv_* 工具面,并把高危命令与危险配置变更拦在策略与两段式确认之后。插件目录页:SkillHub - dsh-server-connector;源码与文档:GitHub - niechao136/dsh-server-connector。