DeepSeek Harness Hub
← 返回列表

caoyiwei850/dsh-ssh-ops

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
✓ 可直接安装

DeepSeek Harness SSH 运维插件:主对话驱动 SSH,带高危命令保护与右侧终端。

自动检查通过:npm 包已发布且 engines 声明满足基线;该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/16 · 已提供中文文档
综合分
45.7
GitHub 分
45.7
用户评分
★ Stars
20
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-ssh-ops
npm 包 dsh-ssh-ops 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-ssh-ops @ 0.3.8
Node 引擎未声明 engines.node
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 07:08:56

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-storage-domain@deepseek-ai/dsh-tools@deepseek-ai/dsh-typert-protocol
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

中文 · English

DSH SSH Ops

DeepSeek Harness 的 SSH 运维插件:在主对话中驱动当前服务器,同时在右侧保留真实的交互式终端,并集成文件管理、端口转发与数据库管理。

License
DSH
version

v0.3.8:按 DSH 插件市场惯例将宿主兼容性唯一声明在四个官方包的 peerDependencies 中,覆盖 0.1.2-rc.1、0.1.3-alpha.2、0.1.5-alpha.1 与已验证的 0.1.6-alpha.1 预发布线;移除不被市场使用的 engines.dsh,避免两套版本口径分叉。

v0.3.5:移除不再维护的「运维模式」预设安装器,避免生成无效的 npm 命令入口;SSH 资源可保存一个默认远程项目目录,点击“进入项目”后终端和 SFTP 会从同一目录开始。

v0.3.4 新增:分栏各走一条独立通道——同一台服务器在两个分栏各开一次会各建一条连接,两条通道、两个终端、各自保留自己的当前目录,不再镜像同一个终端;想共用终端可在连接对话框勾选「复用已打开的连接」。Agent 的作用目标可见、可切换:正在被 Agent 使用的那一栏带蓝色机器人徽标,点另一栏即把 Agent 切过去。不符合 RFC 4253 的 SSH 横幅不再连不上:对端把自我介绍写坏(如 SSH-2.0- OpenSSH 多一个空格、SSH-2.1-)时,此前 ssh2 只会抛一句不说明任何原因的 Invalid identification string,现在仅在它因此拒绝后重试一次并把该行规范化(软件版本原样保留、加密强度不受影响);确实不可用的横幅会明确报出对端原文。另修复在设置页点「连接」不会打开/载入 SSH 窗口的问题。上一版的共享凭据、跳板机、连接复用与终端主题见 0.3.3。桌面版安装说明见 INSTALL.md。

兼容性

- 目标宿主:DSH Desktop / Web Profile 0.1.6 系列;本项目当前开发环境已验证 0.1.6-alpha.1。插件使用 DSH 自带的 Node.js 运行时,不要求系统另装 ssh、sftp 或独立 Node.js。
- 新版右侧边栏:宿主同时提供 sidebarRightTabs 与 sidebarRight 时,SSH 作为官方右侧边栏标签运行,支持宿主分栏、缩放和全屏。
- 旧版回退:缺少上述右侧边栏 API 时,插件自动使用原有浮动 SSH 面板;终端、SFTP、隧道、数据库和 Agent 工具仍可用,但不会获得官方边栏标签和分栏体验。
- 文件字节流:大文件的浏览器上传/下载路由仅在 Web Profile 同时提供 webServer 与请求来源校验服务时注册;不具备该接口的宿主继续使用既有 SFTP 操作。目录归档下载在所有宿主上均返回 501 archive-unavailable,避免 SFTP chroot 与 SSH shell 命名空间不一致造成越界。
- 升级方式:安装或升级后必须完整退出并重启对应 DSH Profile。SSH 资源、已知主机和凭据位于 DSH 的独立本地存储,不在插件包内;常规升级不会删除它们。

示例

主对话直接指挥已连接的服务器,SSH 终端作为官方右侧边栏标签与对话并排显示:

主对话与官方侧栏中的 SSH 终端

文件页签支持 SFTP 管理,并可用 cd 将交互终端切换到选中的远程目录:

官方侧栏中的 SFTP 文件管理与 cd

数据库管理界面

SSH 资产管理

能做什么

- 官方右侧边栏集成(新版 DSH):SSH 终端是官方右侧边栏的一个标签页(与内置「文件」并列),聊天顶部的 SSH 按钮打开或聚焦该标签(重复点击只聚焦、不重复创建);需要同时看文件和终端时使用官方分栏,拖宽、全屏、收起全部由官方管理,终端尺寸随之自动重算。分栏时每个窗格独立:各自维护可见的服务器与选中项,新窗格默认空白、不继承已有服务器;同一台服务器在两栏打开会各建一条独立连接(可在连接对话框勾选复用),关掉其中一栏不影响另一栏,某台服务器不再被任何窗格显示时才真正断开宿主连接。被 Agent 使用的连接带「Agent」徽标,点另一栏即可把 Agent 切过去。连接生命周期与标签显示分离:切换标签、收起侧栏、关闭标签、切换聊天都不会断开 SSH;终端实例常驻内存池,重新打开即恢复完整回看,隐藏期间服务器输出由宿主缓冲、重开时自动补齐。旧版 DSH(无 sidebarRightTabs)自动回退为浮动面板模式,行为不变。
- 终端跟随 DSH 明暗主题:xterm 渲染在自己的 canvas 上、继承不了 CSS 文字色,因此内置完整的明/暗两套对比色板(含光标与选区),随宿主主题切换立即重绘已经打开的终端。
- 在 设置 → SSH 资源 中管理任意数量的服务器和分组;它作为左侧菜单的一等项,与通用设置、模型并列,不再藏在“插件”下。顶部的 SSH 仅打开或聚焦右侧终端标签(旧版 DSH 中为显示/隐藏浮动面板,均不断开连接)。
- 固定远程项目目录:每台保存的服务器可选填一个绝对路径作为默认项目目录。资源卡片上的“进入项目”会建立连接、在经过空闲 shell 与单 PTY 校验后切换终端目录,并让 SFTP 从同一路径载入;目录不接受相对路径或控制字符。未设置的资源仍从登录目录和 SFTP 根目录开始。
- 服务器名称、地址、端口、用户名、认证类型和分组保存到 DSH 本地存储;数量不设上限。
- 密码、PEM 私钥和私钥口令仅保存到 DSH 官方本机凭据库 ~/.dsh/.credentials.yaml(owner-only 权限);浏览器存储、Agent 上下文、工具结果和资源列表均不会读取或显示秘密内容。
- 共享凭据:一份密码或私钥可保存为共享凭据,供多台服务器与跳板机共同引用(例如全组共用同一把运维私钥,改一处即全部生效)。仍被服务器或跳板链引用时拒绝删除;密文只在宿主端解析后交给 SSH 客户端,不进入浏览器存储、不进入 Agent 上下文。在 设置 → SSH 资源 中新增/编辑/删除,支持选择或直接把 PEM 文件拖入窗口。每台服务器既可绑定共享凭据,也可保留自己的专属凭据。
- 跳板机(ProxyJump):跳板机从已保存的服务器中选择(不再是手填主机与密码),密码/私钥/口令统一取自凭据库,跳板同样可复用共享凭据;保存与连接时拒绝把自己设为跳板、重复选择同一台或不存在的资源。跳板链最多 8 跳。
- 每栏各自一条通道(默认):同一台已保存服务器在两个分栏各打开一次会各建一条独立连接——两条通道、两个终端,互不干扰,各自保留自己的当前目录。要改成共用,在连接对话框勾选「复用已打开的连接」:本栏加入已有那条连接,与另一栏共用同一个终端(适合想在同一终端里看着 Agent 干活)。
- Agent 的作用目标可见、可切换:面板上被 Agent 使用的连接带「Agent」徽标。点另一栏的服务器标签或终端区域即把 Agent 切到那一栏——Agent 省略 connection_id 的工具(ssh_exec、sftp_、tunnel_、安全确认卡片)默认作用于它。切到已失效的连接会被拒绝,原有绑定保持不变,不会把 Agent 悬空。
- 主对话自动识别当前右侧已连接服务器,无需向用户索取内部连接 ID。
- Agent 发出的 ssh_exec 命令会显示在右侧终端,并回传退出码、输出、cwd、耗时、超时和截断状态。Linux 上能唯一确认空闲 POSIX 交互 shell 时继承其实际目录;终端繁忙、候选不唯一或目录不可访问时拒绝执行,未检测到交互 shell 时使用登录初始目录并明确标注。
- 对手动终端输出提供按需 ssh_read 读取;不会静默把人工终端内容塞入对话上下文。
- 输出给模型前会脱敏私钥、Bearer Token、常见密码/API Key(含裸 sk- 开头的密钥)和数据库连接口令。
- 连接稳定性:SSH 连接启用 keepalive(20 秒间隔、3 次判定),NAT/防火墙不再静默丢弃空闲连接;传输意外断开后指数退避自动重连(上限 30 秒),命令中途掉线透明重试一次,瞬时连接失败自动重试 3 次(认证失败除外);显式断开或插件卸载不触发重连,重连后远程隧道自动重新注册。对端 SSH 横幅不符合 RFC 4253 时(例如 SSH-2.0- OpenSSH 只多一个空格、SSH-2.1-)不再直接失败:ssh2 一向只认 SSH-2.0-/SSH-1.99- 并抛出信息量极低的 Invalid identification string,现在仅在它因此拒绝之后重试一次,由插件把该行规范化后再交给它握手(对端软件版本原样保留,连接的加密强度不受影响),成功会给出警告;确实不可用的横幅(只支持 SSH-1 的设备、缺少软件版本)则明确报出对端原文与原因,不反复重试。
- 主机指纹校验(TOFU):SSH 连接校验服务器主机公钥指纹——首次连接记录并信任,之后指纹变化即拒(防中间人 / 误连重装机)。每台服务器可选 accept-new(默认)/verify(拒绝未知)/off;指纹变化时不重试、不自动重连,提示用「忘记指纹」重置。设置 → SSH 资源可按服务器设置校验模式、管理已信任指纹并一键忘记。校验在用户认证前,与登录账号/密码无关,同一台服务器换人登录不会被挡。
- 文件管理:SSH 面板「文件」页签,基于 SFTP 浏览服务器目录树,支持上传、下载、新建目录、删除与重命名;对话中也可用 sftp_ 工具直接操作。
- 端口转发:SSH 面板「转发」页签,可建立本地转发(本机 → 服务器可达目标)与远程转发(服务器 → 本机),实时查看与停止隧道;对话中也可用 tunnel_ 工具。
- 多机批量:主对话说「批量执行 」,Agent 创建批量任务,右侧 SSH 面板弹出勾选弹窗,列出 SSH 资源中已保存的全部服务器(含未连接的)供手动勾选,确认后并发执行(每台用保存凭据建连 → 执行 → 断开),结果按服务器分节展示(成功绿 / 失败红)。批量目标与当前打开的连接完全无关,可勾选未连接的服务器;命中安全策略时「命令 + N 台目标」一次性确认,不再逐台弹窗。旧的 ssh_cluster(基于已打开连接、无需确认即群发)已彻底移除:多机操作只能经 ssh_batch 由操作者勾选确认,杜绝「点名一台、全量执行」。
- 数据库:SSH 面板「数据库」页签,支持连接 MySQL / PostgreSQL / Redis / MongoDB,可手动执行 SQL 查询或命令并查看结果表格;对话中也可用 db_* 工具直接操作。
- 支持 db_connect 自动 SSH 隧道:连了服务器后,回环地址(127.0.0.1 / localhost / ::1)的数据库自动经当前服务器隧道访问内网库;via_ssh 可选 auto(默认)/yes/no,显式 ssh_connection_id 优先级最高。
- 支持 SSL 三档(disabled 不加密 / preferred 加密不验证 / verify 加密+验证 CA)适配云托管数据库。
- 数据库连接可保存为资源(profile),重启后一键重连;密码加密存储于 DSH 凭据库;已保存资源支持重命名与折叠分组。
- 工程化闭环:db_query 词法级真只读闸(只放行 SELECT/SHOW/DESCRIBE/EXPLAIN/纯查询 WITH,拦截写动词子查询、PG 数据修改 CTE、SELECT INTO、FOR UPDATE 锁读);查询流式截断默认 200 行 + 30s 超时(可用环境变量 DSH_SSH_OPS_MAX_DB_ROWS 调整,最大 5000;生产环境应按最小必要值配置;MySQL destroy 池连接、PG 用 cursor 分批取);交互式事务工作流 db_tx_begin/execute/commit/rollback(独占连接、变更后验证、闲置 5 分钟自动回滚);db_describe_table 带索引/外键/DDL/行数与容量估计;db_preview 分页采样、db_explain 执行计划。数据库面板含表树、预览视图、一键导出 CSV(含 BOM,Excel 中文兼容)、查询历史(localStorage 50 条)。DB 传输层意外断开不再崩进程(四类客户端统一处理,绝不 throw)。
- 高危 SQL(DROP DATABASE/SCHEMA/TABLE、TRUNCATE、SHUTDOWN)自动拦截,按语句动词识别(跳过字符串/注释、支持多语句),不会误杀字符串字面量里的关键字。

安全边界

DSH 自身权限机制仍然有效。本插件额外阻止 Agent 工具执行明显不可逆或破坏性操作,例如删除文件、删库、格式化磁盘、terraform destroy、kubectl delete、docker prune、强制 Git 清理以及重启/关机。

Agent 命中上述黑名单时不会被静默拒绝:插件会创建一条一次性的待确认记录,并立即在整个视口弹出确认模态(含完整命令、风险原因与「执行 / 撤销」按钮;Esc、点遮罩或「稍后在面板中处理」可暂时收起,全部处理完自动关闭;面板重开时仍未处理的会再次弹出)。未处理项同时常驻在右侧 SSH 面板「终端」窗口上方,卡片默认折叠为单行摘要(命令 + 主机名 + 常驻执行/撤销按钮),最新一条自动展开,点击展开风险说明与完整命令。只有操作者点击红色「执行」才会将命令发送到服务器(自动追加回车);「撤销」清除该记录。危险命令不再预填到终端命令行——输入行始终为空,操作者不可能因误按回车而执行。多条危险命令作为独立卡片排队。若当时没有活跃的终端会话、或命令含 Tab 等无法安全发送到 PTY 的控制字符,则降级为在对话中返回一张可复制的命令卡片,供操作者粘贴到终端执行。普通运维操作(配置 SSL、安装软件包、修改配置、重载服务等)可以正常通过 DSH 的权限流程执行。

同样的模型覆盖 sftp_delete(不再由 Agent 直接删,改为将等价 rm -rf  加入待确认队列)和 db_execute 的高危 SQL(DROP/TRUNCATE/SHUTDOWN):高危 SQL 保持现有模式,返回带
凭据使用建议:ssh_connect / db_connect 以明文参数接收密码或私钥时,这些参数会进入对话与工具调用记录。生产环境请优先把服务器保存为「SSH 资源」(密码存入宿主加密凭据库,面板与 Agent 只见引用),或使用密钥文件的 passphrase 方式,避免在对话中直接传递密钥。

安装

从 GitHub 安装(推荐)
bash
dsh plugin --profile web add github:caoyiwei850/dsh-ssh-ops#v0.3.8

安装后重启 DSH Web:
bash
dsh web

然后打开任意会话,点击顶部的 SSH 标签,使用右侧面板连接服务器。

从发布压缩包安装

从 GitHub Releases 下载 dsh-ssh-ops-0.3.8.tgz 后:
bash
dsh plugin --profile web add /path/to/dsh-ssh-ops-0.3.8.tgz
dsh web

dsh-ssh-ops-0.3.8.zip 适用于离线审阅或二次开发;解压后可在目录中执行 npm install && npm run build。

使用方式

1. 打开 设置 → SSH 资源,新建分组或服务器资源;PEM / .key 文件可直接导入。
2. 保存的资源可直接“连接并打开”,并自动创建右侧 PTY 终端。编辑时秘密字段留空会保持原值;清除凭据需要显式确认。
3. 顶部 SSH 仅控制右侧终端的显示和隐藏;右上角 + 可选择已保存资源,或创建不落盘的临时连接。
4. 在主对话中直接说“查询服务器内存使用情况”或“配置 Nginx SSL 证书”。主 Agent 只能操作当前活动连接,不能枚举保存资源、读取凭据或自动用保存凭据连接。
5. 需要数据库时,让 Agent 调 db_connect(或自己在「数据库」页签新建连接),随后即可在对话中查询/执行。
Agent 工具

共 31 个 Agent 工具,省略 connection_id / db_connection_id 时默认作用于当前活动连接,无需先调 ssh_list / db_list_connections。

SSH(6)

| 工具 | 用途 |
| --- | --- |
| ssh_list | 查看当前活动连接的安全元数据(不包含保存资源或秘密);仅在用户问“连了哪台”时用 |
| ssh_connect | 建立 SSH 连接(密码或私钥)并设为当前服务器 |
| ssh_exec | 在当前服务器执行 Agent 命令(继承交互 shell 当前目录),回传退出码/输出/cwd/耗时/超时/截断/脱敏状态 |
| ssh_read | 按需读取右侧终端缓冲输出(不静默塞入对话) |
| ssh_write | 向指定终端写入交互输入;press_enter(默认 true)自动补回车提交(可传 connection_id 指定目标服务器的终端) |
| ssh_disconnect | 断开当前连接及其 shell 会话 |

手动终端上下文(2)

| 工具 | 用途 |
| --- | --- |
| ssh_terminal_sessions | 列出已打开终端的低敏元数据与读取游标,不返回终端内容或凭据 |
| ssh_terminal_context | 经每次用户确认后,按游标读取指定手动终端的有限、脱敏历史;不会影响右侧终端回看 |

SFTP(6)

| 工具 | 用途 |
| --- | --- |
| sftp_list | 列出远程目录条目(含大小/mtime/权限) |
| sftp_read | 读取远程文件内容(默认上限 4 MiB) |
| sftp_write | 写入远程文件(创建或覆盖) |
| sftp_mkdir | 新建远程目录 |
| sftp_delete | 删除远程文件或空目录(不直接执行,改为把 rm -rf  加入待确认队列或返回可复制卡片) |
| sftp_rename | 重命名/移动远程路径 |

端口转发(3)

| 工具 | 用途 |
| --- | --- |
| tunnel_start | 建立本地转发(local,本机 → 服务器可达目标)或远程转发(remote,服务器 → 本机) |
| tunnel_list | 列出活动隧道 |
| tunnel_stop | 按 tunnel_id 停止隧道 |

批量执行(1)

| 工具 | 用途 |
| --- | --- |
| ssh_batch | 基于 SSH 资源中已保存服务器(含未连接的)创建批量执行任务,由操作者在面板勾选确认后并发下发,结果按服务器分节;仅当用户明确要求多机批量时使用(旧的 ssh_cluster 已彻底移除,多机操作无免确认路径) |

数据库(14)

| 工具 | 用途 |
| --- | --- |
| db_connect | 连接 MySQL / PostgreSQL / Redis / MongoDB;回环地址自动经当前 SSH 服务器隧道,SSL 三档可选 |
| db_list_connections | 列出已打开的数据库连接(仅用户询问时用) |
| db_query | 在 MySQL/PostgreSQL 上跑词法级强制只读查询(仅放行 SELECT/SHOW/DESCRIBE/EXPLAIN/纯查询 WITH;拒绝写动词、SELECT INTO、FOR UPDATE 锁读、数据修改 CTE);结果默认流式截断 200 行,30s 超时;DSH_SSH_OPS_MAX_DB_ROWS 可调整为最多 5000 行;支持 ? / $1 占位符 |
| db_execute | 执行写语句(INSERT/UPDATE/DELETE/CREATE/ALTER);高危 SQL(DROP/TRUNCATE/SHUTDOWN)不执行,返回可复制卡片 |
| db_list_tables | 列出 MySQL/PostgreSQL 当前 schema 的表 |
| db_describe_table | 完整表结构:列、索引、外键、行数/容量估计、MySQL 附 SHOW CREATE TABLE DDL |
| db_preview | 按表名分页采样数据(LIMIT/OFFSET 参数绑定,标识符白名单防注入),附全表行数估计,无需手写 SQL |
| db_explain | 查看查询执行计划(EXPLAIN FORMAT=JSON),检查索引使用 |
| db_tx_begin / db_tx_execute / db_tx_commit / db_tx_rollback | 交互式事务工作流:开事务 → 执行变更 → SELECT 验证 → 提交/回滚(独占连接,闲置 5 分钟自动回滚) |
| db_run | 在 Redis 上跑命令(command+args),或在 MongoDB 上跑 find/findOne/insertOne/updateOne/deleteOne/countDocuments |
| db_disconnect | 关闭数据库连接 |

db_query 用于 SQL 只读查询,db_execute 用于 SQL 写操作,db_run 用于 Redis/MongoDB。MySQL 用 ? 占位符、PostgreSQL 用 $1 占位符。

开发
bash
npm install
npm test
npm run build
npm run pack:release

推送与 package.json.version 一致的 vX.Y.Z tag 时,GitHub Actions 会测试、构建并从同一个 .tgz 同时发布 npm 包和 GitHub Release。首次启用前,在仓库 Secrets 配置 NPM_TOKEN。发版改完版本号后先执行 npm run bump:readme,把 README/README.en 中的徽章、安装命令与发布链接一并同步到新版本。

生成物位于 release/:

- dsh-ssh-ops-0.3.8.tgz:可直接被 DSH 安装。
- dsh-ssh-ops-0.3.8.zip:完整离线源码包。

许可

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(caoyiwei850)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群