DeepSeek Harness 插件

caoyiwei850/dsh-ssh-ops

Star 数 ★ 58 下载量(近 30 天) 6,523 分类 远程与移动端 收录于 2026-08-15 npm dsh-ssh-ops

DSH SSH 运维终端:在主对话中直接指挥已连接的服务器(ssh_connect/ssh_exec/ssh_read/ssh_write/ssh_disconnect),右侧保留可交互的 xterm.js 终端。

安装

# npm 包(预构建)

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

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:caoyiwei850/dsh-ssh-ops

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

中文 · English


DSH SSH Ops

v0.4.9:新增 OpenSSH 配置导入、加密备份去重和服务器搜索,支持精确命令放行与下载校验进度,并改进断连诊断。详见 版本说明。

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

📖 第一次使用?请从产品文档开始——十分钟上手、功能详解、安全模型与场景配方。

v0.4.8:新增服务器配置的加密导出与导入,方便跨电脑迁移;SSH 终端新增外观设置和可选字体语义高亮。最低支持 DSH 0.2.0。详见 版本说明。

v0.4.7:新增流式下载校验、断线及可选跨重启续传,文件编辑差异预览和备份恢复;修复会话日志脱敏与 SFTP 删除目标解析,并更新依赖。跨重启续传会在浏览器本地明文暂存未完成文件,默认关闭。Desktop 新增界面完整交互尚待实机验证。

v0.4.5:新增 sftp_upload_file 单文件并发上传,支持 AI 上传任务进度、取消和当前进程内校验续传;提交前校验远端文件完整性。修复部分宿主的 ssh2 导入兼容问题,为自动重连增加异常兜底;补齐英文工具文档,并说明 DSH 注册表插件更新的适用范围。详见 CHANGELOG.md。

v0.4.4:文件面板新增远程文件搜索与传输任务列表(上传进度、取消、失败清理);插件内一键更新移除,改为宿主插件管理与手动更新指引(防 link 挂载被静默覆盖);适配新版宿主设置图标,修复可选服务未注入时面板空白。详见 CHANGELOG.md。

更新方式:设置页提供更新指引。线上安装通过 DSH 插件管理页更新;本地链接请在源码目录更新。插件不再自行执行安装。

兼容性

  • 目标宿主:DSH Desktop / Web Profile,经 engines.dsh 声明为无上界区间 >=0.2.0——宿主自 0.2.1-alpha.4 起优先按该字段判定插件兼容性(includePrerelease 语义,engines.dsh 单独定夺、peer 不再参与门槛),覆盖 0.2.0 起的宿主版本(预发布版本的判断以宿主实现为准),宿主升级无需发版跟进;四个官方包的 peerDependencies 保持各自的兼容范围,继续承担 npm 安装期职责。当前开发环境已验证 0.2.0-rc.2 桌面版。插件使用 DSH 自带的 Node.js 运行时,不要求系统另装 ssh、sftp 或独立 Node.js。
  • 新版右侧边栏(必需):宿主须同时提供 sidebarRightTabs 与 sidebarRight,SSH 以官方右侧边栏标签运行,支持宿主分栏、缩放和全屏。缺少这两个 API 的旧版宿主不再有浮动面板回退(已移除):插件宿主半(Agent 的 SSH/SFTP/数据库工具)照常工作,但不会显示终端 UI。
  • 界面语言:自动跟随宿主语言(中文 / English),并随运行中切换即时重绘;宿主运行插件未内置的第三方语言(如俄语)时回退为默认中文并回写设置文件——此类环境可通过设置文件钉住语言(autoApplySystemLanguage: false + language,详见「使用」一节)。
  • 文件字节流:大文件的浏览器上传/下载路由仅在 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/固定深浅主题、按主题自定义背景和可选语义高亮(默认关闭)。配色方案支持颜色与正则标签编辑、拖动或 Alt+↑/↓ 排序、实时可编辑预览、当前主题重置和 JSON 备份。设置即时应用到所有终端和分栏,保存在当前浏览器并同步同源窗口;远端 ANSI/truecolor 和字体样式优先,日志页签原有高亮保持独立。详见终端显示说明。
  • 在 设置 → SSH 资源 中管理任意数量的服务器和分组;它作为左侧菜单的一等项,与通用设置、模型并列,不再藏在“插件”下。顶部的 SSH 仅打开或聚焦右侧终端标签,不断开连接。
  • 跨电脑迁移:服务器分组旁可导出和导入加密备份,包含服务器配置、分组、共享凭据、密码、私钥、跳板关系和已信任主机指纹。备份使用独立口令加密;导入新增服务器并复用同名分组,不覆盖已有服务器。数据库连接、全局 AI 策略和本机工作区绑定不包含在内。
  • 固定远程项目目录:每台保存的服务器可选填一个绝对路径作为默认项目目录。资源卡片上的“进入项目”会建立连接、在经过空闲 shell 与单 PTY 校验后切换终端目录,并让 SFTP 从同一路径载入;目录不接受相对路径或控制字符。未设置的资源仍从登录目录和 SFTP 根目录开始。
  • 远程工作区:在「编辑 SSH 资源 → 高级选项」里(就在「默认项目目录」下面)可以把某个 DSH 工作区绑定到「这台服务器 + 一个远端绝对路径」——之后该工作区里 Agent 调用的 sftp_* 默认落到远端这个目录(相对路径以它为根)、默认使用绑定的服务器,对话上下文里也会写明文件在远端,Agent 不再把本地空目录当成项目。边界是明说的:DSH 原生的 read/write/edit/glob/grep 与本地 bash 仍在你自己机器上(宿主只挂载一个文件系统后端,插件不碰它),所以「远程工作区」不是远端挂载——远端读写请走 sftp_* 或 ssh_exec。开发自 #38。绑定可选「文件操作时自动连接」,但仍受设置页的「允许 AI 自动连接已保存服务器」总开关约束;自动连上的机器会在右侧面板显示,操作者始终看得见是哪台。
  • 登录命令(可选):每台保存的服务器可在「高级选项」里填一条登录命令,替代服务器默认 shell 作为终端会话打开(ssh -t 语义的 exec+伪终端)——默认 shell 不兼容的服务器(如 zsh 机器临时用 bash -l)、或想把 tmux attach、进目录后进 shell 一类动作固化为登录会话时使用。命令即整个登录会话:想要正常 profile 加载请写 bash -l 而非裸 bash;须为单行、无控制字符;留空或临时连接按服务器默认 shell。Agent 转发与终端缩放在该路径下与普通终端行为一致。
  • 服务器名称、地址、端口、用户名、认证类型和分组保存到 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 浏览、上传、下载、目录搜索和文本编辑。支持文件保存 API 的浏览器可以流式下载并查看进度、速度和剩余时间,其他浏览器仍受读取大小限制。编辑器可并排预览修改;保存前检查原始内容并在同目录创建私有备份,面板可恢复最近一次保存,也可在重新打开面板后从文件列表恢复备份。备份留在远端并可能包含敏感内容,请按需清理;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 清理以及重启/关机。黑名单同时覆盖高频绕过变体:find -exec rm、xargs rm、rimraf,以及 python/perl/ruby/php/node 一行流里调用 unlink/rmtree/rmSync 等(源自真实事故:rm 被拦后 Agent 换用其它代码完成删除)。黑名单无法穷尽(任何脚本/管道都可能藏删除),因此下面两层「后果兜底」与它配合,而不是只依赖识别。

删除可逆化(rm → 确认后进远端回收站):Agent 发起的删除依然必须过人手——简单 rm/unlink/rmdir(单条命令、显式字面路径、无管道/重定向/glob/变量展开)照常触发操作者确认(会话内打断式审批,见下),批准时执行的是可恢复的移动:目标被 mv 进服务器上的 ~/.dsh-trash/,并在该目录的 manifest.tsv 里记录原绝对路径与时间;24 小时后的过期项会在下一次有新文件进回收站时顺带真删(不在服务器上安装任何定时任务)。也就是说 Agent 发起的简单删除不会真正发生——误删(包括人看错主机或路径)都能从回收站 mv 回来;要彻底删除,由操作者自己在终端执行 rm(人工输入不经过此拦截,边界不变)。ssh_exec 与 sftp_delete 均走此路径,确认文案会注明「批准 = 移入回收站」。复合命令、find -delete、shred 等无法安全改写的删除照常走审批(批准 = 原命令真跑)。

危险 SQL 可恢复化:db_execute 的高危 SQL(DROP/TRUNCATE/SHUTDOWN,按语句动词识别)依旧绝不执行,但拦截瞬间会自动备份受影响的表——行数据经只读导出通道落盘(SSH 连接的库写到远端 /tmp/dsh-backup-*.csv,直连的库写到 DSH 宿主临时目录),MySQL/SQLite 还会附带建表 DDL(PostgreSQL 暂无 DDL 来源);DROP DATABASE 会逐表备份(上限 20 张,超出明示)。其中 DROP TABLE 进一步转为隔离改名:备份完成后自动 RENAME 为 <表名>_to_be_dropped_<日期>(重名自动加序号),数据原样保留、可随时改回。Agent 永远无法完成真正的删除——隔离表的最终 DROP 只接受面板(人工)发起,Agent 再次发起会被明确拦截。备份/隔离清单会完整出现在工具结果里;备份失败时同样如实标注(隔离改名本身可逆,所以不因备份失败而放弃)。

Agent 命中上述黑名单时不会被静默拒绝:整个工具调用会在会话内挂起,由宿主的原生审批通道向操作者弹出生成式确认(含完整命令、所在主机、风险类别与「批准 / 拒绝」)。Agent 在等答复期间寸步难行——不能重试、不能换写法绕行、也不能并行推进其它操作,人不在场时调用按拒绝处理(fail-closed);批准一次性生效、只对刚才那条命令和那台机器有效,用完即焚。危险命令若在传输中断后结果不明,不会被透明重放,而是报告需人工核实的失败。批准简单 rm 时实际执行的是进回收站的可逆移动(见上);宿主没有审批通道时同样拒绝并明示原因。普通运维操作(配置 SSL、安装软件包、修改配置、重载服务等)不受影响。

同样的模型覆盖 sftp_delete(同样走宿主会话内审批,批准时尽量留回滚副本,见上)和 db_execute 的高危 SQL(备份 + 隔离;高危 SQL 仍返回可复制 SQL,见上)。SQL 判断按语句动词识别(跳过字符串/注释、支持多语句、按 ; 切分),不会误杀字符串字面量里的关键字,高频增删改查正常放行。

凭据使用建议:ssh_connect / db_connect 以明文参数接收密码或私钥时,这些参数会进入对话与工具调用记录。生产环境请优先把服务器保存为「SSH 资源」(密码存入宿主加密凭据库,面板与 Agent 只见引用),或使用密钥文件的 passphrase 方式,避免在对话中直接传递密钥。

安装

从 npm 安装(推荐)

在 DSH 的插件管理中按包名 dsh-ssh-ops 从 npm 安装。支持插件更新的 DSH 版本可为注册表安装且被宿主标记为可更新的插件提供版本检查与更新;实际入口和生效方式以宿主提示为准。

本地 link:、Git 和压缩包安装不会显示宿主的注册表版本更新区块。开发者请保留本地链接并在源码目录更新,不要用线上安装覆盖。

从 GitHub 安装

dsh plugin --profile web add github:caoyiwei850/dsh-ssh-ops#v0.4.9

git 渠道装的是源码,安装期由 prepare 钩子自动执行 npm run build 生成入口 lib/,无需手动构建。注意:pnpm ≥ 10 默认拦截依赖包的构建脚本——若重启后 SSH 标签未出现,按 INSTALL.md 第 3 步检查 node_modules/dsh-ssh-ops/lib/:缺失说明构建被拦,进入该包目录执行 npm install && npm run build(或在该 profile 的 pnpm 配置 onlyBuiltDependencies 中放行 dsh-ssh-ops)后重启即可。

安装后重启 DSH Web:

dsh web

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

从发布压缩包安装

从 GitHub Releases 下载 dsh-ssh-ops-0.4.9.tgz 后:

dsh plugin --profile web add /path/to/dsh-ssh-ops-0.4.9.tgz
dsh web

dsh-ssh-ops-0.4.9.zip 适用于离线审阅或二次开发;解压后在目录中执行 npm install(构建自动完成)。

使用方式

  1. 打开 设置 → SSH 资源,新建分组或服务器资源;PEM / .key 文件可直接导入。
  2. 保存的资源可直接“连接并打开”,并自动创建右侧 PTY 终端。编辑时秘密字段留空会保持原值;清除凭据需要显式确认。
  3. 顶部 SSH 仅控制右侧终端的显示和隐藏;右上角 + 可选择已保存资源,或创建不落盘的临时连接。
  4. 在主对话中直接说“查询服务器内存使用情况”或“配置 Nginx SSL 证书”。主 Agent 只能操作当前活动连接,不能读取凭据;默认也不能枚举保存资源或自动用保存凭据连接——在 设置 → SSH 资源 → AI 自动连接 打开开关后,Agent 才能按名称连接已保存服务器并切换当前连接(每次连接都会在右侧面板打开终端,操作者始终可见)。
  5. 需要数据库时,让 Agent 调 db_connect(或自己在「数据库」页签新建连接),随后即可在对话中查询/执行。
  6. 插件界面语言自动跟随 DSH 自身的语言设置(中文 / English):切换即时重绘整个插件界面,Agent 可见的工具消息经回写即时并持久跟随;左侧设置菜单的「SSH 资源」标签与图标也随语言动态变化。

固定界面语言。 可以通过插件设置文件(~/.dsh/storages/ssh_ops_settings.json)关闭自动跟随行为。该功能适用于系统使用插件未内置的第三方语言(如俄语)的场景——若不固定,此类语言会被强制回退为默认中文,且插件会在每次加载时把该值回写进配置文件。改为固定使用指定语言即可:

{
  "unit": { "name": "ssh_ops_settings", "version": 1 },
  "global": null,
  "tables": {
    "settings": {
      "main": {
        "language": "en",
        "autoApplySystemLanguage": false
      }
    }
  }
}
  • autoApplySystemLanguage:true(默认值;字段缺失时与 true 相同)表示跟随 DSH 自身语言并在每次加载时回写,行为与之前完全一致。false 表示固定使用存储的 language 值:既不跟随宿主语言,也不回写,文件保持你手动编辑的状态。升级后首次加载时,插件会把默认值 true 写入配置文件,以便看到该开关。
  • language:"zh" 或 "en",当 autoApplySystemLanguage 为 false 时作为固定语言使用;自动跟随开启时忽略该字段。
  • 请在 Harness 停止时编辑该文件(运行中的实例在加载时可能会改写它),编辑完成后重启 Harness 使更改生效。

Agent 工具

共 41 个 Agent 工具(其中 15 个数据库工具可配置关闭),省略 connection_id / db_connection_id 时默认作用于当前活动连接,无需先调 ssh_list / db_list_connections。

SSH(7)
工具 用途
ssh_list 查看当前活动连接的安全元数据与秘密无关信息;开启「AI 自动连接」后同时列出已保存服务器(不含凭据),仅在需要枚举时用
ssh_connect 建立 SSH 连接(密码或私钥)并设为当前服务器
ssh_connect_profile 按名称连接已保存的 SSH 资源并设为当前服务器(右侧面板同步打开终端);仅在操作者开启「AI 自动连接」后可用,未开启时明确报错提示转人工
ssh_exec 在当前服务器执行 Agent 命令(继承交互 shell 当前目录),回传退出码/输出/cwd/耗时/超时/截断/脱敏状态
ssh_read 按需读取右侧终端输出——默认只回上次读取之后的新增(已在上下文里的历史不重复吐),mode: "tail" 读全量;不静默塞入对话
ssh_write 向指定终端写入交互输入;press_enter(默认 true)自动补回车提交(可传 connection_id 指定目标服务器的终端)
ssh_disconnect 断开当前连接及其 shell 会话
手动终端上下文(2)
工具 用途
ssh_terminal_sessions 列出已打开终端的低敏元数据与读取游标,不返回终端内容或凭据
ssh_terminal_context 经每次用户确认后,按游标读取指定手动终端的有限、脱敏历史;不会影响右侧终端回看
Shell 集成与会话日志(4)
工具 用途
ssh_shell_integration 为空闲的交互式终端启用 shell 集成
ssh_session_log_list / ssh_session_log_search / ssh_session_log_read 列出、搜索和读取会话日志
SFTP(9)
工具 用途
sftp_list 列出远程目录条目(含大小/mtime/权限)
sftp_read 读取远程文件内容(默认上限 4 MiB)
sftp_write 写入远程文件(创建或覆盖)
sftp_mkdir 新建远程目录
sftp_delete 删除远程文件或空目录(必须经宿主会话内审批;简单字面路径批准后优先移入回收站)
sftp_rename 重命名/移动远程路径
sftp_upload_file 单文件分块并发上传,完成前校验 SHA-256;失败或取消后可在重新连接同一服务器后通过任务 ID 校验并续传
sftp_upload_dir 上传本地目录树到远程(自动建目录结构;小文件并发、大文件独占;单文件失败逐条上报不中断整批)
sftp_download_dir 下载远程目录树到本地(同上调度策略)
端口转发(3)
工具 用途
tunnel_start 建立本地转发(local,本机 → 服务器可达目标)或远程转发(remote,服务器 → 本机)
tunnel_list 列出活动隧道
tunnel_stop 按 tunnel_id 停止隧道
批量执行(1)
工具 用途
ssh_batch 基于 SSH 资源中已保存服务器(含未连接的)创建批量执行任务,由操作者在面板勾选确认后并发下发,结果按服务器分节;仅当用户明确要求多机批量时使用(旧的 ssh_cluster 已彻底移除,多机操作无免确认路径)
数据库(15)
工具 用途
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_export 将数据库查询结果导出到文件
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 占位符。

开发

npm install
npm test        # db-lazy-load 会在缺少 lib/ 时自动先构建宿主包
npm run build   # 生成 lib/(宿主三件 + 客户端 bundle);lib 是构建产物,不入库
npm run pack:release

lib/ 目录由 npm run build 生成并列入 .gitignore(PR diff 因此不再被构建产物淹没)。git 渠道(github:)安装依赖 prepare 钩子在安装期自动构建出 lib/(pnpm ≥ 10 拦截构建脚本时需放行或手动构建,见「安装」一节);npm 与 tgz 渠道的包内自带产物。仓库内 npm install 也会顺带构建一次。

推送与 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.4.9.tgz:可直接被 DSH 安装。
  • dsh-ssh-ops-0.4.9.zip:完整离线源码包。

许可

项目原创代码使用 MIT。终端默认配色与语义高亮规则为本项目独立设计,不属于第三方内容;其他第三方材料的来源、适用范围和随包许可文本见第三方声明。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。