跳到主内容

dsh-ssh 使用指南

DSH Web GUI 的 SSH 运维底层引擎:持久 ssh2 连接池、Web 终端、SFTP 传输、本地端口转发与集群执行,外加 6 个 Agent 工具。

本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。

本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。

快速上手

dsh-IDE

— 源: plugin_wiki.wiki_content

安装与验证

dsh plugin --profile web add --allow-build=@deepseek-ai/dsh-ssh github:chenw2759-wq/dsh-IDE#path:packages/dsh-ssh

复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。

— 源: plugins.install

关键要点

  • 🖥️ 右侧边栏:可停靠的右栏抽屉——文件树 + 预览/编辑同框;拖 tab 拖出成浮窗,拖回右缘自动停靠(下框 / 右栏 / 浮动 / 三栏 IDE 四态切换)
  • 📄 预览:Markdown / HTML / 图片 / CSV / Office(docx / xlsx / pptx)/ 日志等多格式直接预览
  • ✏️ 编辑:代码即时编辑(语法高亮 + 行号 + 斑马纹)+ Markdown/HTML Word 式可视化编辑 + Office 框内富文本编辑
  • 🧩 IDE:文件树、命令行终端、Trae 风格红绿 diff、类型颜色标签、Git 角标、监视路径——开箱即用的 JupyterLab 式工作区
  • 下框展示(⇊):预览显示在下栏

— 源: plugin_wiki.readme_zh (fallback readme_raw)

常见问题

这个插件和官方 dsh-ssh 是一回事吗?

是同一个插件市场条目。dsh-ssh 由 chenw2759-wq/dsh-IDE 仓库发布,提供持久 SSH 连接池 + Web GUI 主机管理面板 + Web 终端 + 6 个 Agent 工具,是 DSH 上手动远程运维的入口;dsh-easyssh 在其之上加了工作区模式切换。

必须先在 GUI 里配置主机,Agent 才能调用吗?

是。Agent 工具(ssh_list / ssh_exec / ssh_upload / ssh_download / ssh_tunnel / ssh_cluster)共用 ~/.dsh/dsh-ssh.json 这份主机配置;首次使用需在 SSH 面板的「主机」页增删改,或一键从 ~/.ssh/config 导入。

配置文件存在哪里、是否加密?

存于 ~/.dsh/dsh-ssh.json,文件权限 0600、目录 0700,原子写入。密码 / 密钥口令以明文保存(与 ssh-skill 在 ssh-config 注释里写密码同一信任模型),文档明确要求把它当作本地凭据对待,不要上传到云端。

Web 终端走的是什么协议?

xterm.js + WebSocket PTY 终端。Web 端用 xterm.js 渲染,浏览器走真实 RFC 6455 WebSocket 升级到 /api/dsh-ssh/terminal,后端是 ws + ssh2 的 client.shell 流,支持自适应尺寸、TCP 背压(1MB 高水位暂停、512KB 低水位恢复)。

支持跳板机(ProxyJump)吗?

支持多级跳板。每个跳板机必须先在 ~/.dsh/dsh-ssh.json 里配置为独立主机别名,跳板链按顺序通过 hopClient.forwardOut 把下一跳转发到 127.0.0.1:0,最终落到目标主机的 pooled 连接上。

Web 端 /api/dsh-ssh/ 路由在 LAN 上能用吗?*

不能。所有路由(含 WebSocket 终端)强制 loopback-only:要求请求来自 127.0.0.1 / ::1,host 头是 127.0.0.1 / localhost / [::1],且 Sec-Fetch-Site ≠ cross-site;这些 API 可执行远程命令,禁止 LAN 暴露。

上传 / 下载路径有什么限制?

上传的目标路径必须是绝对路径(相对路径会报 "remotePath must be an absolute path");下载暂不支持目录(仅单文件),上传支持目录递归;临时暂存用 os.tmpdir()/dsh-ssh-uploads/,传输完成后清理。

断线会自动重连吗?如何彻底卸载?

会自动重连:SshEngine.withClient 默认每个操作最多重试 3 次;连接空闲 30 分钟后自动断开;SFTP 通道按 client 缓存复用。卸载用 dsh plugin remove 然后重启 dsh web;插件自带的 cordis.patch.yml 会作为 profile bundle layer 一并撤销,无需手动恢复其他文件。

— 源: plugin_wiki.faq_json

兼容性

  • DSH: 0.1.0-rc.6+
  • Node: ^22.19.0 || >=24.0.0

— 源: plugin_wiki.compatibility_json

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则