AllDSH
EN

DSH SSH Ops

caoyiwei850 · caoyiwei850/dsh-ssh-ops

在主对话中驱动 SSH 操作,带危险命令防护和一个侧边终端。

DSH SSH Ops 是 caoyiwei850 开发的 DSH 插件,在主对话中驱动 SSH 操作,带危险命令防护和一个侧边终端。收录于开发与运维和集成与连接,适合终端与 Shell。验证等级 L3(安装命令可解析),安全扫描尚未完成,兼容目标是 DeepSeek Harness 0.1.5-rc.2,条目最后核查于 2026-09-18,采用 MIT 许可。安装命令:dsh plugin --profile web add dsh-ssh-ops

本条目由 赤榆 核查,数据更新于 · 引用规则

L3active
DSH SSH Ops 验证面板:验证等级 L3(共 5 级)——安装命令可解析,已声明 DSH 目标版本。安全扫描:未验证(未运行扫描)。兼容目标:DeepSeek Harness 0.1.5-rc.2。许可:MIT。GitHub 星标:20。条目最后核查 2026-09-18。
DSH SSH Ops 的验证面板。该条目处于 5 级验证中的 L3 级:安装命令可解析,已声明 DSH 目标版本。安全扫描:未验证(未运行扫描);兼容目标:DeepSeek Harness 0.1.5-rc.2;许可:MIT;条目最后核查于 2026-09-18。 验证规则说明

实际使用截图

本站截图:插件跑在一次性 DeepSeek Harness 里、任务跑在自动生成的演示项目上,不是你的机器,也不是作者提供的图。点击任意一张可看大图。

DSH SSH Ops — 安装并启用后的样子:「设置 → 插件 → 插件列表」中展开的条目,含完整包名、配置状态与运行状态。
安装并启用后的样子:「设置 → 插件 → 插件列表」中展开的条目,含完整包名、配置状态与运行状态。
DSH SSH Ops — 插件在右侧边栏新增的面板:「SSH Terminal」。
插件在右侧边栏新增的面板:「SSH Terminal」。

由 AllDSH 于 2026-09-19 在 DSH 0.1.5-rc.1 上截取,视口 1920×1080,包版本 dsh-ssh-ops@^0.3.8。

安装命令

dsh plugin --profile web add dsh-ssh-ops

需要先启动 harness:npx @deepseek-ai/dsh web,然后执行上面的命令。第一次用?先看安装教程。

这个插件是什么

DSH SSH Ops 是一个把远程服务器操作搬进会话里的 DeepSeek Harness 插件。你在主对话里描述任务,Agent 通过 SSH 执行对应命令,而一个真实的交互式终端就停在 Harness 官方右侧边栏、和对话并排。围绕这条主线,它还提供 SFTP 文件管理、端口转发、多机批量执行,以及 MySQL、PostgreSQL、Redis、MongoDB 的数据库访问。

发布包名为 dsh-ssh-ops,版本 0.3.5,许可为 MIT,仓库是 github.com/caoyiwei850/dsh-ssh-ops。它的 package.json 声明 main: lib/index.js,另有 ./typert、./remote、./client 三个导出入口,所以装到机器上的是预编译好的 JavaScript,不是你还需要自己编译的源码。

dsh 字段告诉 Harness 什么、进而实际装上什么,值得单独看清:

  • dsh.bundle.patch 指向 ./cordis.patch.yml,安装这个包的同时会把该组合补丁应用到你的 profile。包的 files 清单会一起发布 lib、scripts、cordis.patch.yml、INSTALL.md 与 LICENSE。
  • dsh.client 声明 platform: "web",并注入 @deepseek-ai/dsh-client-runtime——终端和数据库面板是浏览器端渲染的客户端代码。
  • 运行时依赖为 ssh2、mysql2、pg、pg-cursor、redis、mongodb、zod。README 另有一处说明:较新的 DSH 会通过 @xterm/xterm 安装客户端终端;而 @xterm/xterm 与 @xterm/addon-fit 在已发布的清单里被列在 devDependencies 而非运行时依赖,README 并未解释这一差别。

它具体能做什么

README 描述的是右侧一个带页签的面板——终端、文件、转发、数据库——外加 29 个 Agent 工具,按 SSH(6)、SFTP(6)、端口转发(3)、批量执行(1)、数据库(14)分组。凡是接受 connection_id / db_connection_id 的工具,省略参数时都作用于当前活动连接,因此 Agent 不需要先调 ssh_list 或 db_list_connections。

  • 命令执行:ssh_exec 在当前服务器执行 Agent 命令,并回传退出码、输出、cwd、耗时、超时与截断状态。README 称它在能唯一确认存在空闲 POSIX 交互 shell 时继承该 shell 的实际目录;终端繁忙、候选不唯一或目录不可访问时拒绝执行。
  • 终端读写:ssh_read 按需读取侧边终端的缓冲输出,人工终端内容不会被静默塞进对话;ssh_write 向终端写入交互输入,press_enter 默认为 true。
  • 文件传输:SFTP 的列出、读取(默认上限 4 MiB)、写入、新建目录、重命名、删除,面板与工具两条路径都可用。
  • 端口转发:本地转发(本机 → 服务器可达目标)与远程转发(服务器 → 本机),可在面板建立、查看、停止,也可用 tunnel_* 工具。
  • 多机批量:ssh_batch 基于 SSH 资源中已保存的服务器创建批量任务,包含未连接的那些;随后面板弹出勾选窗口,由操作者确认后并发下发,每台各自建连、执行、断开,结果按服务器分节。README 明确说旧的 ssh_cluster(基于已打开连接、无需确认即群发)已被彻底移除。
  • 数据库:支持 MySQL、PostgreSQL、Redis、MongoDB;回环地址的数据库会自动经当前 SSH 服务器隧道访问内网库(可关)。db_query 是 MySQL/PostgreSQL 上的词法级只读闸,db_execute 负责写操作,db_run 负责 Redis 命令与 MongoDB 操作,另有闲置 5 分钟自动回滚的交互式事务工作流。

侧边终端是真 PTY

README 描述的是一个真正的交互式终端,而不是日志视图:原文是「并自动创建右侧 PTY 终端」——连接一个已保存资源就会在右侧建立 PTY 终端。它由 xterm 渲染在自己的 canvas 上,因为继承不到 CSS 文字色,所以内置了完整的两套明/暗对比色板,宿主主题切换时会立即重绘已经打开的终端。连接生命周期与标签显示是分离的:切换标签、收起侧栏、关闭标签、切换聊天都不会断开 SSH;终端实例常驻宿主内存池,重新打开即恢复完整回看,隐藏期间服务器输出由宿主缓冲。

人工输出与 Agent 命令在同一个终端里汇合——Agent 命令会显示在该终端中——但 README 并没有把终端描述成 Agent 的输入通道。它描述的恰恰是相反的流向:Agent 按需用 ssh_read 读取终端,而不是让人工终端内容静默进入对话。一个人直接在终端里敲字能否影响 Agent 的下一条命令,源文件没有涉及;源文件只说明 ssh_exec 在终端繁忙时拒绝执行。

安全模型,逐字读

对一个在别人机器上跑命令的工具来说,这一节最该读清楚。这里的防护不是 dry-run,也不是先给你一份计划差异;它是黑名单加操作者确认队列。

先看 README 的原话:「DSH 自身权限机制仍然有效。本插件额外阻止 Agent 工具执行明显不可逆或破坏性操作,例如删除文件、删库、格式化磁盘、terraform destroy、kubectl delete、docker prune、强制 Git 清理以及重启/关机。」也就是说,DSH 自身的权限机制依然生效,插件另外拦住它判定为「明显不可逆或破坏性」的操作。

命中之后会发生什么,README 写得很具体:插件创建一条一次性的待确认记录,并立即在整个视口弹出确认模态(含完整命令、风险原因与「执行 / 撤销」按钮);未处理项同时常驻在右侧 SSH 面板终端窗口上方的卡片里。README 的原话是「只有操作者点击红色「执行」才会将命令发送到服务器(自动追加回车)」;危险命令不再预填到终端命令行,输入行始终为空,因此误按回车不会执行任何东西。如果当时没有活跃的终端会话,或命令含 Tab 等无法安全发往 PTY 的控制字符,就降级为在对话中返回一张可复制的命令卡片,由操作者自己粘贴执行。

同一套机制覆盖三个面:ssh_exec 的 shell 命令、sftp_delete(不再由 Agent 直接删,改为把等价 rm -rf <路径> 加入待确认队列)、以及 db_execute 的高危 SQL(DROP/TRUNCATE/SHUTDOWN 返回带 sql 代码块的卡片,供操作者粘贴到数据库面板手动执行)。README 说明 SQL 判断按语句动词识别,会跳过字符串与注释、支持多语句(按 ; 切分),不会误杀字符串字面量里的关键字。而配置 SSL、安装软件包、修改配置、重载服务这类普通运维操作,可以正常通过 DSH 的权限流程执行。

有三件事 README 没有说,读者不应该自行补全:

  1. 谁来决定什么算危险。 README 说插件会拦住它判定为破坏性的操作,并给出例子,但没有公布任何模式清单,也没有说明清单如何修改。
  2. 能不能关掉。 没有任何配置开关、阈值或旁路被写进文档。这只是「没有记载的关闭途径」,不等于「无法绕过」。同一处值得一并留意:插件还注册了 ssh_write,一个「向指定终端写入交互输入」的工具,而 README 的安全边界一节没有说明这条路径是否也走同一套确认队列。
  3. 是否还有其他闸门。 除黑名单之外,README 没有描述逐命令的白名单、对普通命令的强制审批,也没有对每条命令的事前审批。这里说的「防护」覆盖的是破坏性那一小部分,不是全部流量。

凭据:存什么、存哪里、以什么形态

认证支持密码、PEM 私钥与私钥口令,README 对存储位置的表述相当明确:「密码、PEM 私钥和私钥口令仅保存到 DSH 官方本机凭据库 ~/.dsh/.credentials.yaml(owner-only 权限);浏览器存储、Agent 上下文、工具结果和资源列表均不会读取或显示秘密内容。」

也就是说,已保存资源的秘密放在 Harness 自己的本机凭据库 ~/.dsh/.credentials.yaml,文件权限限于属主。README 逐一列出了不接触它的面:浏览器存储、Agent 上下文、工具结果、资源列表都不会读取或显示秘密内容;数据库 profile 的密码则被描述为加密存储于 DSH 凭据库。

有两句话不能往外延伸。README 担保的是这个库是官方的、文件是 owner-only 的;它没有给出加密算法、密钥派生方式或主密钥位置,除了把数据库密码存储称为「加密」之外,也没有说这个文件本身是加密的。Agent 的触及范围同样由这段话划定:「主 Agent 只能操作当前活动连接,不能枚举保存资源、读取凭据或自动用保存凭据连接。」

共享凭据在另一个方向上改变了图景,值得理解:一份密码或私钥可以保存为共享凭据,供多台服务器与跳板机共同引用;README 说密文只在宿主端解析后交给 SSH 客户端,不进入浏览器存储、不进入 Agent 上下文;仍被服务器或跳板链引用时拒绝删除。

README 真正记录下来的泄露路径不是凭据库,而是那条捷径:「凭据使用建议:ssh_connect / db_connect 以明文参数接收密码或私钥时,这些参数会进入对话与工具调用记录。生产环境请优先把服务器保存为「SSH 资源」(密码存入宿主加密凭据库,面板与 Agent 只见引用),或使用密钥文件的 passphrase 方式,避免在对话中直接传递密钥。」换句话说,把密码或私钥当明文参数传给 ssh_connect / db_connect,它就会落进对话与工具调用记录;README 给出的补救办法是改用 SSH 资源保存,或改用密钥文件口令方式。

运行要求

  • Node 版本:源文件未说明。 已发布的 package.json 里没有 engines 字段,README 也没有给出最低 Node 版本。你在别处看到的任何数字都不算数。
  • Harness 下限:README 写明的目标宿主是 DSH 0.1.5 系列,并说明本项目当前开发环境为 0.1.5-rc.2——本站把这条声明逐字记录为 dshTarget。README 里最新的集成方式——SSH 作为官方右侧边栏的标签页——需要带 sidebarRightTabs 的新版 DSH。旧版 DSH(无 sidebarRightTabs)会自动回退为浮动面板模式,README 称行为不变。
  • Profile 与平台:面向 DSH Web,dsh.client.platform 是 "web",README 的安装步骤以重启 Web 界面收尾。
  • 系统二进制:文档没有提出任何要求。SSH 栈是 npm 上的 ssh2,终端是 @xterm/xterm,这些都随包安装,而不是需要你预装的系统工具。
  • 宿主配置:已保存服务器、分组、跳板机(ProxyJump,从已保存服务器中选择而非手填,跳板链最多 8 跳)与主机指纹校验模式,都在 设置 → SSH 资源 里配置。每台已保存服务器可选填一个绝对路径作为默认项目目录,相对路径与控制字符会被拒绝。除了一台你能认证的 SSH 服务器,README 没有说明远端还需要什么。

已知限制与失效模式

  • 防护只覆盖破坏性那一部分。 没有任何模式列表能覆盖所有破坏性命令。README 给出的是一串例子,不是完备性承诺;真正被强制执行的,只是模式列表认得出来的那些。
  • 重连行为:keepalive 间隔 20 秒、3 次判定;传输意外断开后指数退避自动重连,上限 30 秒;命令中途掉线透明重试一次;瞬时连接失败自动重试 3 次(认证失败除外);显式断开或插件卸载不触发重连;重连后远程隧道自动重新注册。
  • 主机指纹校验(TOFU):默认 accept-new(首次连接记录并信任),每台服务器可选 verify 或 off。指纹变化时不重试、不自动重连,只提示用「忘记指纹」重置。校验发生在用户认证之前,与登录账号无关。
  • 输出处理:README 称输出给模型前会脱敏私钥、Bearer Token、常见密码/API Key(含裸 sk- 开头的密钥)与数据库连接口令。Agent 命令的输出会显示在侧边终端,并随退出码、cwd、耗时、超时、截断状态一起回传。
  • 信任边界:插件用你给的凭据在远程主机上执行命令。README 没有声称这套防护是穷尽的,也没有声称它适合生产机群;本目录标注的 security: unverified 就是这个意思——这个站点不对任何条目做自动化安全扫描。
  • 批量执行:ssh_batch 的目标由操作者从已保存服务器中勾选,与当前打开的连接完全无关。README 明确说 ssh_cluster 移除后,多机操作不再有免确认路径。
  • 横幅兼容的代价:对端 SSH 横幅不符合 RFC 4253 时(例如 SSH-2.0- OpenSSH 多一个空格、SSH-2.1-),插件在 ssh2 拒绝之后重试一次并规范化该行再交给握手,对端软件版本原样保留;确实不可用的横幅会明确报出对端原文与原因,不反复重试。

什么时候用它,什么时候不要用

适合用在「普通的、可重复的服务器运维」上,而且是从对话里驱动:看日志、查内存与磁盘、改配置、配 TLS、重载服务、传文件、为一个内网服务开隧道,或者透过跳板机检查某台主机上的数据库。SSH 资源库、共享凭据、跳板链和默认项目目录这几样,是让反复访问变便宜的部分;而那条独立的确认队列,确实比「模型发什么就跑什么」的工具要好。

不要把它当成机群的安全网。源文件本身就给了三条具体理由:黑名单覆盖的是「明显的破坏性例子」而不是所有破坏性命令;README 从未声称它适合生产机群;而文档里最大的凭据风险——把明文私钥或密码传给 ssh_connect / db_connect——是 README 请你避开的用法,而不是插件替你挡住的行为。如果你没法盯着确认队列,防护会降级成对话里一张可复制的卡片,这意味着决策带着更少的上下文回到了你手上。另外对 ssh_batch 要格外小心:它会一次性把命令扇出到许多已保存主机;如果这条命令你不会亲手在每一台上敲一遍,就不要点确认。

源文件没有说明的内容

列在这里,是为了不让它们被读成承诺:

  • README 与包清单里都没有星数、下载量或采用规模数据。本条目 frontmatter 里的 stars 与 forks 来自本目录自己的数据,不来自插件源文件。
  • 没有任何安全审计、复核流程、威胁模型、CVE 记录或漏洞上报渠道的说明。
  • 没有「防护无法被绕过」的声明,也没有「覆盖所有破坏性命令」的声明——只有上文引用的那些例子。
  • 没有把秘密描述为某种加密方案:文件被描述为 owner-only,只有数据库密码存储被称作加密。
  • 没有 Node 版本、没有支持的操作系统、除 SSH 服务器外没有远端前置条件,也没有性能或规模数据。
  • 除已引用的「终端繁忙时拒绝执行」之外,没有说明一个人在终端里输入的内容能否影响 Agent 的执行路径。
  • 关于与另一个插件 dsh-web 的「SSH Ops」组件的关系:未核实。本条目写作时无法取得该插件的源文件,因此这里不对两者的功能重叠或差异做任何判断。

FAQ

危险命令防护到底是黑名单、提示,还是更强的东西?

是黑名单加操作者确认。README 说插件阻止明显不可逆或破坏性的操作,把它们排成一次性待确认记录,并弹出含完整命令与「执行 / 撤销」的模态框;在操作者点击「执行」之前,命令不会被送到服务器。它不是 dry-run,对普通命令也不会先给你看执行计划。

我能关掉或绕过这个防护吗?

README 没有记载任何配置开关、阈值或旁路,也没有公布可编辑的模式清单。它同样没有声明防护无法被绕过——请把这份沉默读作「没有文档」,而不是「不可能」,并在生产主机上保持你自己的审批习惯。

我的 SSH 密码和私钥是加密存储的吗?

README 说密码、PEM 私钥和私钥口令仅保存到 Harness 本机凭据库 ~/.dsh/.credentials.yaml,权限为 owner-only;数据库密码存储被描述为加密。它没有给出加密算法或密钥管理方案,所以准确的表述是「官方凭据库中权限限于属主的文件」,而不是泛泛的「静态加密」。

Agent 能读到我的凭据,或者枚举我保存的服务器吗?

README 说主 Agent 只能操作当前活动连接,不能枚举保存资源、读取凭据,也不能自动用保存凭据连接。文档记录的泄露路径是另一回事:当你把密码或私钥作为明文参数传给 ssh_connect 或 db_connect 时,这个值会进入对话与工具调用记录。

Agent 会自动看到我在终端里输入的所有内容吗?

不会。README 说终端输出由 ssh_read 按需读取,人工终端内容不会被静默塞进对话上下文。另外,交给模型的输出会脱敏私钥、Bearer Token、常见密码与 API Key,以及数据库连接口令。

来源与参考

本页的技术判断建立在以下第一手资料之上,链接可直接追溯核对。

  1. [1]caoyiwei850/dsh-ssh-ops — GitHub插件自身的仓库与 README——本条目的每一项论断都以这份第一手文档逐条核对。
  2. [2]dsh-ssh-ops on npm — npm本页安装命令实际解析到的已发布包。
  3. [3]deepseek-ai/deepseek-harness — GitHubDeepSeek Harness、Cordis 运行时与插件加载模型的上游仓库。
  4. [4]@deepseek-ai/dsh on npm — npm已发布的 harness 包,也是本站 dshTarget 字段跟踪的版本来源。
  5. [5]dsh-plugin GitHub topic — GitHub本站用于发现收录插件的检索入口。

全部链接最后核验于 2026-09-11

关于本条目的问题

DSH SSH Ops 安全吗?可以安装吗?
DSH SSH Ops 当前的验证等级是 5 级中的 L3 级(安装命令可解析,已声明 DSH 目标版本),安全状态为「未验证(未运行扫描)」。验证等级记录的是安装路径被核查到什么程度,它本身不是安全保证:是否安全取决于插件实际能碰到什么。安装前请阅读源码与安装脚本,确认它对文件、shell、网络和凭证的访问范围。
DSH SSH Ops 兼容哪个 DeepSeek Harness 版本?
DSH SSH Ops 声明 dshTarget 为 0.1.5-rc.2,即本站核查这条目时所对应的 DeepSeek Harness 版本。dshTarget 是插件作者声明的兼容目标,它只说明该版本被核查过,并不保证上游发布新版本后插件仍然可用。升级 harness 前请先在隔离的 profile 中试装。
DSH SSH Ops 怎么安装?
先用 npx @deepseek-ai/dsh web 启动 harness,然后复制页面顶部的安装命令。该命令由仓库发布的包名(或条目声明的安装 spec)生成,因此不会与仓库实际发布的内容脱节。本条目最后核查于 2026-09-18。
危险命令防护到底是黑名单、提示,还是更强的东西?
是黑名单加操作者确认。README 说插件阻止明显不可逆或破坏性的操作,把它们排成一次性待确认记录,并弹出含完整命令与「执行 / 撤销」的模态框;在操作者点击「执行」之前,命令不会被送到服务器。它不是 dry-run,对普通命令也不会先给你看执行计划。
我能关掉或绕过这个防护吗?
README 没有记载任何配置开关、阈值或旁路,也没有公布可编辑的模式清单。它同样没有声明防护无法被绕过——请把这份沉默读作「没有文档」,而不是「不可能」,并在生产主机上保持你自己的审批习惯。
我的 SSH 密码和私钥是加密存储的吗?
README 说密码、PEM 私钥和私钥口令仅保存到 Harness 本机凭据库 ~/.dsh/.credentials.yaml,权限为 owner-only;数据库密码存储被描述为加密。它没有给出加密算法或密钥管理方案,所以准确的表述是「官方凭据库中权限限于属主的文件」,而不是泛泛的「静态加密」。
Agent 能读到我的凭据,或者枚举我保存的服务器吗?
README 说主 Agent 只能操作当前活动连接,不能枚举保存资源、读取凭据,也不能自动用保存凭据连接。文档记录的泄露路径是另一回事:当你把密码或私钥作为明文参数传给 ssh_connect 或 db_connect 时,这个值会进入对话与工具调用记录。
Agent 会自动看到我在终端里输入的所有内容吗?
不会。README 说终端输出由 ssh_read 按需读取,人工终端内容不会被静默塞进对话上下文。另外,交给模型的输出会脱敏私钥、Bearer Token、常见密码与 API Key,以及数据库连接口令。

相似的 DSH 插件

查看全部

从会话中启动的持久、可继续的后台代理;在可选的 Web UI 侧边栏查看,通过工具发消息并按请求中断。

L3
15 TypeScript

Archify

tt-a1i

编辑推荐

把系统的类型化 JSON 描述编译为单一自包含 HTML 图表的代理技能,交付前先经过校验。

L1
66.3k JavaScript

API Relay Audit

toby-bridges

一个 DSH 插件,复用当前 provider 的接入点与凭据,对 AI API 中转站做本地 14 步审计。

L3
838 Python

本地优先的自托管 agent 运行时与 MCP 桥接,带沙箱会话与审计回放。

L2
646 TypeScript

dsh-ios

ZSeven-W

把一块实时 iOS 模拟器——以及一台 USB 连接的真机 iPhone——放进对话里:22 个 Agent 工具、可点按的 MJPEG 面板、基于无障碍标识与 OCR 的点按,以及 SwiftUI 预览热重载。

L3
295 TypeScript

Aegis

GanyuanRan

让代理先对齐项目基线再动手改代码,用新鲜证据证明完成,并让小任务留在快速通道上。

L2
1.2k Python
ESC

输入关键词搜索索引,索引由 Pagefind 在部署时生成。