dsh-ssh-ops
remotetested: passnpmMIT
SSH ops terminal for DSH Web UI: drive a connected server from the main conversation (ssh_connect/ssh_exec/ssh_read/ssh_write/ssh_disconnect) while keeping an interactive xterm.js terminal on the right.
下载量 / Downloads
4,594
依赖体积 / node_modules
20.35 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1
Install
dsh plugin --profile web add dsh-ssh-ops
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
中文 · [English](./README.en.md)
DSH SSH Ops
DeepSeek Harness 的 SSH 运维插件:在主对话中驱动当前服务器,同时在右侧保留真实的交互式终端,并集成文件管理、端口转发与数据库管理。



📖 第一次使用?请从[产品文档](./docs/product-guide.md)开始——十分钟上手、功能详解、安全模型与场景配方。
v0.4.4:文件面板新增远程文件搜索与传输任务列表(上传进度、取消、失败清理);插件内一键更新移除,改为宿主插件管理与手动更新指引(防 link 挂载被静默覆盖);适配新版宿主设置图标,修复可选服务未注入时面板空白。详见 [CHANGELOG.md](./CHANGELOG.md)。
v0.4.3:修复 macOS 27 + Desktop v0.12.1 插件市场无法安装(mongodb 拆独立懒加载 chunk 出运行依赖闭包、客户端专用 xterm 搜索扩展移出运行依赖)与 ssh_terminal_sessions/ssh_terminal_context 调用报错(补输出渲染)。详见 [CHANGELOG.md](./CHANGELOG.md)。
v0.4.2:修复 sftp_read 超限读取与空密码保存问题;文件面板新增上传进度、远端写入状态和完成提示,流式上传通过临时文件完成后再替换目标。详见 [CHANGELOG.md](./CHANGELOG.md)。
v0.4.1:远程工作区相对路径改以会话当前远端目录为基(cd子目录后sftp_*相对路径跟随,越界仍锁绑定根);ssh_read 增量读在缓冲翻滚后依然增量;SFTP 目录传输支持取消、空闲死线与半成品清理;工作区绑定下拉可改绑他人已绑工作区。
v0.4.0:危险命令确认整体迁移到宿主原生会话内审批——ssh_exec与sftp_delete在操作者答复前挂起,一次性批准绑定命令与服务器,拒绝、取消或无审批通道一律 fail-closed;同时包含远程工作区(把 DSH 工作区绑定到已保存服务器的远端目录,sftp_*自动使用绑定根与服务端)、ssh_read增量读取、终端 Ctrl+滚轮缩放与选中即复制、日志 warning/error 高亮、最近用户名自动记忆;修复客户端 apply 重试残留、zsh/NAS 自定义登录 shell 的ssh_exec目录探测、官方 Desktop 一键更新通道,并加固远端路径符号链接边界与跨读取脱敏。
v0.3.22:新增 AI 命令执行策略三档——右侧终端左下角新增档位贴片(标准 / 自定义放行 / 全部放行,默认收缩为贴边色点、悬停展开;往松切需确认、切换只对本次会话生效,资源「高级选项」可按服务器覆盖,设置页第三页签管全局默认与放行类目);Agent 永远无法自行放宽——档位切换是操作者专属 RPC,被拦时 Agent 只会拿到结构化拒绝与指引,多机批量的操作者勾选闸门也不受档位影响;被放行的命令按原样执行(删除不再进回收站,警示文案明示)。修复 #33——网络设备(华为 VRP / 华三 Comware)上ssh_exec15 秒静默卡顿后返回空输出:exec 通道超时改为先本地结算再关闭(对端不响应 CHANNEL_CLOSE 也不再挂死调用方),探测超时且零字节返回即判定为网络 CLI 设备、自动改走交互终端路径并以提示符回归为完成信号(首次调用当场降级;提示符识别覆盖 VRP/Comware/Cisco,分页自动推进,识别失败给人话错误而非空超时)。修复 SOCKS5 动态转发(ssh -D)三缺陷(外部排查报告核实后修复):握手解析器在 CONNECT 应答后退役——转发流量不再无界累积(实测 48 MiB 转发常驻 +204 MiB 降回零)、管线化载荷不再丢失(握手窗口内残余先 flush 再 pipe)、连接计数不再双减;顺带修复git clean -fd(最常见写法)因正则尾部写错从未被拦截的既有漏洞。
v0.3.21:修复 #32 报告的宿主闪退(Windows 真机,未捕获异常直接击穿 DSH 进程)——① ssh2 的forwardOut在传输断开时同步 throw 而不走 callback(Not connected),断线后隧道 listener 仍监听、迟到接入即崩宿主:三处调用点(本地隧道 / SOCKS5 / DB 隧道)全部捕获,失败只牺牲该连接;② 隧道 socket/channel 无error监听,本地 RST(ECONNRESET)零监听即崩:双向互相拆链 + 迟到 channel 丢弃 + 竞态接入拒绝;③ 传输丢失、显式断开、插件卸载三条路径统一关闭隧道 listener 并同步退役依附该 SSH 连接的 DB 隧道(事务回退、redis 断连一并处理),不再留幽灵监听;④ 顺手修复隧道面板列表渲染的TypeError: t2 is not a function(渲染回调参数遮蔽了 i18n 翻译函数t,0.3.10 起潜伏,隧道列表非空即崩 tab)。
v0.3.20:新增 SSH 资源「登录命令」(高级选项,ssh -t语义的 exec+伪终端——默认 shell 不兼容的服务器填bash -l即可临时改用 bash,tmux attach、进目录后进 shell 一类动作也可固化为登录即得;命令即整个登录会话,改完保存后下一个终端即生效、无需重连);ssh_exec 的 cwd 解析器拒绝语义拆分(多候选歧义与忙/非交互各占独立消息,后者带候选进程的 comm/pgrp/tpgid 摘要,现场排障一眼定性;讨论自 #31);删除 SSH 资源时同步清除该主机的指纹信任记录,不再残留于「已信任主机」列表。
v0.3.19:新增 SSH Agent 转发(资源「高级选项」开关——跳板机上可用本机密钥继续登录更深层的机器,无需把私钥铺到每一跳;本机未运行 ssh-agent 时连接直接报错,不做静默降级);数据库连接新增查询超时覆盖(db_connect的query_timeout_ms,慢库上的大查询/大导出不再被 35s 默认死线掐死,0为不限);认证阶段设备主动SSH_MSG_DISCONNECT时给出人话化断开原因(原因码 + 设备原文 + 两层排查提示);设置页「服务器分组 / 共享 SSH 凭据」改为滑动分段切换;插件页换上展示图标与双语标题/描述(DSH 0.2.x 插件管理行,品牌蓝终端标记);修复 #29——github:渠道装出来没有lib/导致插件整体加载失败,现由prepare钩子在安装期自动构建。CI 同步加固:测试矩阵加 Windows 腿、npm 渠道产物冒烟作业、tarball 文件清单进断言。
v0.3.18:新增界面语言钉住开关——DSH 运行插件未内置的语言(如俄语)时,可在设置文件设autoApplySystemLanguage: false+language钉住插件语言,不再被强制回退中文回写;默认跟随行为不变。见「固定界面语言」说明。贡献:@alexeyfadeev(PR #28)。
v0.3.17:修复 0.3.16 的 #27——i18n 重构漏改变量名导致官方侧栏注册抛 ReferenceError、SSH 终端 UI 完全不可见;eslint 现已覆盖客户端 JSX 并新增回归断言。
v0.3.16:新增中英双语界面——始终自动跟随 DSH「设置 → 语言」(含运行中切换,无需刷新),中文为源、英文覆盖,左侧「SSH 资源」标签与终端图标随语言动态变化;设置页新增自更新条(版本徽标、GitHub 链接、检查更新对话框、一键更新与可复制的手工更新命令);lib 构建产物出库(仓库不再提交打包产物);资源表单布局紧凑化;移除损坏的 ~/.ssh/config 导入;已信任主机列表支持直接删除。
v0.3.15:新增双因素认证——防火墙/交换机把AuthenticationMethods配成password,publickey(或反序)时,可在资源或共享凭据里为密码/私钥再配一条相反类型的第二因素,这类设备此前必然登录失败;SQL 词法扫描加固,修复反斜杠引号方言与 PG dollar 引用两个破坏性语句漏检(Oracleq''交替引号经实测否决并固化为回归探针);会话日志支持多选 + 全选批量删除;移除旧版 DSH 的浮动面板回退,官方右侧边栏成为 SSH 终端的唯一宿主形态。
v0.3.14:新增默认关闭的「AI 自动连接」开关。开启后,Agent 可按名称连接已保存的 SSH 资源,目标终端自动出现在右侧;关闭时,Agent 无法枚举保存资源。修复会话日志空文件读取问题。
v0.3.13:整轮更新——SFTP 目录批量上传/下载(新工具sftp_upload_dir/sftp_download_dir:小文件并发、大文件独占、单文件失败不中断整批);SSH 认证失败结构化诊断(试过哪些方法、服务器还接受什么、下一步怎么走),并新增 keyboard-interactive 认证(保存的密码应答交互提示/MFA 门禁,设备掐断时自动降级纯密码重试);数据库连接健壮性三件套(TCP keepalive、空闲复用前活性 ping + 透明重连、断连时手工事务有界收尾);修复 MySQL 未知字符集文本列显示为字节对象的问题;上一版的破坏性操作可逆化(rm 回收站、危险 SQL 自动备份、DROP 隔离改名、绕过向量封堵)一并随本版发布。
更新方式:设置页提供更新指引。线上安装通过 DSH 插件管理页更新;本地链接请在源码目录更新。插件不再自行执行安装。
兼容性
- 目标宿主:DSH Desktop / Web Profile,经
engines.dsh声明为无上界区间>=0.1.5-alpha.1——宿主自 0.2.1-alpha.4 起优先按该字段判定插件兼容性(includePrerelease语义,engines.dsh单独定夺、peer 不再参与门槛),覆盖0.1.5起的全部宿主版本(含一切预发布),宿主升级无需发版跟进;四个官方包的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 命名空间不一致造成越界。
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::53,最后更新 2026-11-06