@deepwhale-cn/dsh-ssh-console:给 agent 一条受控的 SSH 执行通道

前言

在 DSH 里让智能体操作远端机器,最常见的做法是另开一条 ssh 通道:命令由 agent 自己拼,shell 由 agent 自己管。这种做法有三个直接的问题:你看不到它实际敲了什么命令,密码 / sudo / 指纹这类必须由人完成的交互没有落点,事后也没有一份可以回看的记录。

feely0208/dsh-ssh-console 给出的是一条受控、可审计的执行通道。它不做共享 PTY,而是把边界写死:主机白名单、只走密钥、危险命令二次确认、全量留痕。下面介绍它的能力、安装方式和使用边界。

这是什么

@deepwhale-cn/dsh-ssh-console 是 DSH(DeepSeek Harness)的一个插件,包描述为「深鲸 SSH 控制台」:在侧栏面板里列出 ~/.ssh/config 中的主机、执行远程命令、全量审计留痕。它由 feely0208 维护,仓库地址为 github:feely0208/dsh-ssh-console,package.json 中作者一栏为温州深鲸智能科技有限公司。

解决的问题是:agent 需要能碰远端机器,但执行过程要处于人的可视、可确认、可回看范围内。关键词(README 原文)为 SSH、远程运维、审计、危险命令确认、DeepSeek Harness 插件。

核心功能

  1. 主机白名单:默认只允许 ~/.ssh/config 里的别名;确需把策略放宽到任意 user@host 时,显式设置 DSH_SSH_ALLOW_ANY=1。
  2. 只走密钥:调用本机 ssh 时使用 BatchMode=yes。需要密码的场景会明确报错,而不是诱导你把密码写进配置或插件。
  3. 危险命令二次确认:命中 rm -rf、mkfs、dd、shutdown、chmod 777、强推、npm publish 等模式时,返回「需要确认」,只有带 confirm=true 才会执行。
  4. 全量审计:每次执行、被拒绝的执行、待确认的请求都写入 ~/.dsh/ssh-console-audit.jsonl。

面板分四个区域:

区域 内容
主机 从 ~/.ssh/config 读取(别名 + 用户@主机)
命令 多行输入;执行后显示退出码、耗时、stdout/stderr
待确认 危险命令命中时出现,必须点「我知道风险,执行」
审计 最近 20 条执行记录(时间 / 主机 / 结果 / 命令摘要)

安装与启用

安装命令来自 README 原文:

dsh plugin --profile web add @deepwhale-cn/dsh-ssh-console

安装前需要的环境要求(package.json):

"engines": {
  "dsh": ">=0.1.0-rc.6 <0.3.0",
  "node": ">=18"
}

许可证为 MIT,当前版本 0.1.0。该插件面向 web 平台,dsh.client.inject 注入 @deepseek-ai/dsh-client-runtime,platform 为 web,immediately 为 true;dsh.bundle.patch 指向 ./cordis.patch.yml。入口为 ./lib/index.js,另有 ./lib/client.js。

安装前应先读一遍源码与 LICENSE。该插件以当前 dsh 进程的权限运行,它执行远程命令依赖的是本机 ssh 可执行文件,因此也要看运行 dsh 的账号本身能访问哪些主机和凭据。

典型用法

安装完成后,侧栏会多出「SSH 控制台」。先做两件准备:确认目标主机的别名已经写在 ~/.ssh/config 里,确认本机 ssh 已配置好密钥或 ssh-agent(插件不保存密码,也不做凭据代理)。

执行顺序如下:

  1. 在「主机」区域选定别名。列表来自 ~/.ssh/config。
  2. 在「命令」区域输入要执行的命令,支持多行。
  3. 点「执行」,面板显示退出码、耗时、stdout 与 stderr。
  4. 若命中危险命令模式,面板不会直接执行,而是在「待确认」区域出现条目,需要点「我知道风险,执行」;或者以带 confirm=true 的方式确认后才执行。
  5. 每次执行、拒绝、待确认都会追加一条记录到 ~/.dsh/ssh-console-audit.jsonl,可在「审计」区域查看最近 20 条。

以下命令均为危险命令示例,会触发二次确认:

rm -rf /var/lib/app
mkfs.ext4 /dev/sdb1
dd if=/dev/zero of=/dev/sda
shutdown -h now
chmod 777 /etc/app
git push --force origin main
npm publish

适用场景与注意

适合这几类场合:需要从 DSH 侧栏发起远程命令、想让每次远端操作都有时间 / 主机 / 结果 / 命令摘要可回看、不想让密码进入插件或配置文件。

需要注意的边界(README「边界(重要)」一节):

  • 不保存密码、不做代理:只调用本机 ssh,凭据由你的 ssh 体系(key / agent)管理。
  • 不是完整终端:一次一条命令执行,不保留 shell 状态,cd / export 不跨命令。需要交互式登录请用系统终端。
  • 超时:默认 30 秒,最长 120 秒;长任务请用 nohup / tmux 自己托管。
  • 审计文件是明文 JSONL,留在本机;不要把它放在共享目录里。

该插件是一个工具,使用者需遵守所在地区法律法规,对使用本项目造成的后果自行承担责任。

结尾

这个插件的价值不在于提供更顺手的远程 shell,而是把远程执行的边界固定下来:谁来执行、能不能执行、执行了什么、被拒绝过什么,都有记录。目录页与仓库如下:

  • SkillHub 目录页:https://www.skillhub.cn/plugins/feely0208/dsh-ssh-console
  • GitHub:https://github.com/feely0208/dsh-ssh-console

需要说明的是,SkillHub 是独立的社区目录站点,与 DeepSeek / 幻方没有官方从属关系,该插件并非官方应用商店中上架的产品。

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

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

小夜