supengpeng/dsh-ssh ↗★ 0

@local/dsh-ssh

SSH plugin for DSH: connection management, command execution, SFTP transfer, and a right-sidebar session workspace. 适合需要在DSH右侧边栏直接管理远程服务器、执行命令和传输文件的用户。

Package
@local/dsh-ssh
Compatibility
Unverified
Harness peer range
>=0.1.0-rc.6
Cordis peer range
>=4.0.1
Version
0.1.0
License
MIT
Last updated
Sep 27, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:supengpeng/dsh-ssh

2. 配置

全部配置项与默认值在 cordis.patch.yml(ICD §6)。常用项:

配置默认说明
maxSessions10并发会话上限(与"10 会话并发"验收对齐)
connectTimeoutMs / operationTimeoutMs15000 / 120000建连 / 单次操作超时
graceKillMs3000timeoutMs 到期后 SIGTERM → SIGKILL 的宽限
keepaliveIntervalMs / keepaliveCountMax20000 / 3心跳与判死阈值(连续失败 → SSH_TIMEOUT_IDLE)
retries2 / 500 / 5000 / true仅对 retryable 错误重试,指数退避 + 抖动
hostKey.policyaccept-newstrict(首连必须人工确认)/ accept-new / insecure
hostKey.knownHostsFile'' → /known_hostsOpenSSH 兼容;支持 `
sftp.chunkBytes / maxConcurrentChunks262144 / 4分块大小与并发分块数
sftp.resume / sftp.verifytrue / size+mtime断点续传与校验(none/size+mtime/sha256)
secrets.provider / envPrefixcredentials / DSH_SSH_凭据来源;环境变量优先级最高且只读
logging.redact / redactKeystrue / […]三层脱敏中的日志层
maxOutputBytes262144单命令输出上限(超限保留头尾并置 truncated)
ui.defaultWidthPx / terminalFontSize420 / 13侧栏宽度与终端字号

凭据永远不落配置文件:密码/passphrase 走 ctx.credentials,或用一次性内存凭据(connect 的 secrets),或 DSH_SSH_ _PASSWORD 环境变量(只读、UI 显示 source:'env')。UI 与日志中只会出现固定 8 个圆点的掩码。

3. UI 使用

实测状态(2026-09-27,真实浏览器 + 真机 203.0.113.10):连接与交互式终端已端到端打通 —— console 首行 marker ssh-client-2026-09-26.4-console-clean,rpc stream sshPlugin/openShell 打开,逐键 shellWrite {"data":"l"/"s"/" "/"-"/"a"/"\r"} 全部 ok,终端有提示符且 ls -a 有真实输出,console 无未捕获错误。host 日志:connected to root@203.0.113.10:22 in 712ms (auth=password(••••••••), hostKey=accept-new)。原文与复现方法见 docs/ACCEPTANCE.md §11。 十条验收标准全部通过(用户 2026-09-27 实机走查):GUI 内 top 全屏、文件页签的目录导航(进入/.. 返回)、上传(rpc stream sshPlugin/upload + 传输条进度)、下载(download open + 6938 B 文件落地)、多会话标签与亮/暗主题切换,均已实测通过。逐条原话与 console/host 日志见 docs/ACCEPTANCE.md §11.7/§11.8。 证据边界(如实):100 MiB 级传输的闭环在引擎/工具层(真机 100.0 MiB 实测);UI 侧实测为小文件(6938 B),不宣称“UI 端完成 100 MiB 传输”。 平台限制:当前桌面端组合无凭据服务("persisted": false, "reason": "no credentials service in this composition"),密码只存在于会话内存,每次重启 DSH 需重新输入;属平台能力缺失,非插件缺陷。

  1. 打开右侧栏:点侧栏底部 SSH 动作(sidebar.footer.action),或会话输入框左侧的 SSH 图标;Ctrl/Cmd+Shift+S 亦可。
  2. 新建连接(Ctrl/Cmd+T):填 名称 / 主机 / 端口 / 用户 / 认证方式;测试连接(conn.test)会显示延迟、服务端 banner 与主机密钥指纹。
  3. 首次连接:策略为 strict 时弹指纹确认;accept-new 自动记住到 known_hosts;指纹变化一定触发二次确认(SSH_HOSTKEY_MISMATCH)。
  4. 连接后进入会话工作区,四个标签:
    • 终端:真 PTY,跑 top/vim 等全屏程序正常,支持复制粘贴、清屏、字号、重连;
    • 命令:单命令 stdout/stderr/退出码/耗时,历史上下翻;
    • 文件:远端目录浏览、上传/下载(进度、断点续传、校验)、新建/重命名/删除/chmod;
    • 日志:本会话审计(脱敏后),可导出。
  5. 多会话标签(Ctrl/Cmd+1..9 跳转、Ctrl/Cmd+W 关闭并二次确认),状态栏显示延迟、连接时长、流量。
  6. 断开:状态栏 断开,或关标签。快捷键总表见 ICD §8.4。