dshseek

seek://map/dsh-hardssh

dsh-hardssh SSH 工作区

工具集成社区★ 3验证于 2026年9月13日tiphareth0/dsh-hardssh← 返回地图

#ssh #workspace #remote #terminal #web-ui

TL;DR

据其 README,dsh-hardssh 把服务器上的任意目录变成「SSH 工作区」:绑定后,该会话里的文件读写与命令执行透明地运行在远端主机上,任何走标准 ctx.fs / ctx.subprocess 接口的既有插件无需改动即自动远端执行。同时提供跟随当前会话的 SSH 运维能力:Web 终端(xterm + WebSocket PTY)、SFTP 上传下载、本地端口转发与远端命令,并带支持 ~/.ssh/config 导入的主机管理。密码默认不落盘(VSCode Remote-SSH 式),可选加密 vault;不修改官方内核,仅替换服务 seam。由 tiphareth0 维护,npm 包 @tiphareth/dsh-hardssh 已发布。

dsh-hardssh 把服务器上的任意目录绑定为 DSH 的「SSH 工作区」:绑定后的会话里,文件读写与命令执行透明地运行在远端主机,任何走标准 `ctx.fs` / `ctx.subprocess` 接口的插件零改动即可远端执行——机制是经 `cordis.patch.yml` 替换服务 seam,不修改官方内核。右侧栏「SSH 操作台」跟随当前会话所在的服务器(Web 终端、SFTP 传输、隧道、远端命令),密码默认不落盘、可选加密 vault。它与本图谱 dsh-web 条目内的 SSH/SFTP 运维面板是不同作者的独立项目,侧重点在工作区级的透明路由。

速览

install
dsh plugin --profile web add @tiphareth/dsh-hardssh
license
BSD-3-Clause
note
仓库 README 记 0.2.2;本站 2026-09-13 探测 npm registry,latest 已读到 0.2.3。

要点

  • 据其 README,绑定 SSH 工作区后,该会话里的文件读写与命令执行透明地运行在远端主机;机制是 cordis.patch.yml 禁用部署自带的 fs-sandbox / subprocess 服务行、改由本插件提供路由门面,因此任何通过标准 ctx.fs / ctx.subprocess 接口工作的插件都自动运行在远端,无需该插件写 SSH 代码
  • README 明确说清例外:glob / grep 走本机打包的 ripgrep,读不到服务器上的工作区,在 SSH 会话里被显式拒绝(不会静默返回「无匹配」),提示改用 remote_search 或 ssh_exec;pwsh / powershell / cmd 是客户端原生二进制,在本机执行,而 read / write / edit / bash 走替换后的 seam、在远端生效
  • 据其 README,SSH 运维跟随当前会话:Web 终端(xterm + WebSocket PTY)、SFTP 上传下载、本地端口转发、当前服务器的远端命令;操作台没有服务器下拉框,强制取自当前会话所在的 SSH 工作区,避免在同一面板里误操作到别的主机
  • Agent 工具包括 ssh_list / ssh_exec / ssh_upload / ssh_download / ssh_tunnel / ssh_cluster 与远端工作区工具 remote_status / remote_ls / remote_search,跨主机并发命令用 ssh_cluster;主机管理面板按服务器分组列出主机与工作区,支持增删改查与 ~/.ssh/config 导入
  • 安全默认值:密码 / 密钥口令默认不落盘(secretStorage: none,首次连接输入一次、在该连接存活期内复用);需要无人值守时可显式启用 vault 加密存储(AES-256-GCM + scrypt);主机密钥 TOFU 首次信任、变更立即告警;远端路径强收敛,符号链接逃逸 fail closed
  • 据其 README,工作区底座平台无关:SSH 只是其中 provider,local 是另 provider,同一套底座可继续接 docker / wsl / 云 devbox,上层插件、工具与 UI 都不用改;少数自带文件/进程抽象的插件只需替换几处接口,写给 agent 的适配手册在 packages/dsh-hardssh/SKILLS.md
  • 不修改官方内核,只作为普通插件挂载(目录流、左侧全局入口行、右侧栏 Tab);据其 README 已适配 DSH 0.1.5(实测 0.1.5-rc.1);npm 包 @tiphareth/dsh-hardssh 已发布,本站 2026-09-13 探测 registry,latest 读到 0.2.3(README 记 0.2.2)

常见问题

已有的 DSH 插件要改代码才能在服务器上跑吗?

据其 README,绝大多数插件零改动:只要走标准 ctx.fs / ctx.subprocess 接口,在 SSH 工作区会话里就自动运行在远端主机。少数自带文件/进程抽象或自建「本地/远端」状态的插件,只需把对应接口换成通用底座里的等价物(README 给出接口对照表),且 packages/dsh-hardssh/SKILLS.md 是写给 agent 的执行手册,含判定命令、对照表、可照抄代码与自检清单。

glob / grep 在 SSH 会话里还能用吗?

据其 README,不能,且不会静默失效:这两种调用走本机打包的 ripgrep,无法读取服务器上的工作区,插件在 SSH 会话里显式拒绝并提示改用远端检索工具 remote_search(mode=glob 或 mode=grep)或 ssh_exec。pwsh / powershell / cmd 同理是客户端原生二进制、在本机执行;远端文件读写与命令执行(read / write / edit / bash)走已替换的 seam,在远端生效。

密码会存到磁盘上吗?

据其 README,默认不落盘(secretStorage: none,VSCode Remote-SSH 式):首次连接输入一次,在该连接存活期内复用,连接池空闲回收后需重新输入。需要无人值守访问密码主机时,可显式启用 vault 模式做加密存储(AES-256-GCM + scrypt),自动解锁默认关闭、需 vaultAutoUnlock 显式开启;主机密钥采用 TOFU 首次信任,密钥变更立即告警。

它和本地图谱 dsh-web 条目里的 SSH/SFTP 运维面板是什么关系?

两者是不同作者的独立项目:dsh-web 的 dsh-ssh 面板属于 zhu1090093659 的 Web UI 合集,dsh-hardssh 由 tiphareth0 维护,其 README 未提及 dsh-web。功能侧重不同——前者是合集内的 SSH/SFTP 运维面板,dsh-hardssh 的独特点是把远端目录绑定为 SSH 工作区、让整个会话的文件与命令经 seam 透明路由到远端主机。

官方参考

GitHub 仓库 — tiphareth0/dsh-hardssh ↗