@local/dsh-ssh
SSH plugin for DSH: connection management, command execution, SFTP transfer, and a right-sidebar session workspace. 适合需要在DSH右侧边栏直接管理远程服务器、执行命令和传输文件的用户。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:supengpeng/dsh-sshREADME
Read the full README ↗2. 配置
全部配置项与默认值在 cordis.patch.yml(ICD §6)。常用项:
| 配置 | 默认 | 说明 |
|---|---|---|
maxSessions | 10 | 并发会话上限(与"10 会话并发"验收对齐) |
connectTimeoutMs / operationTimeoutMs | 15000 / 120000 | 建连 / 单次操作超时 |
graceKillMs | 3000 | timeoutMs 到期后 SIGTERM → SIGKILL 的宽限 |
keepaliveIntervalMs / keepaliveCountMax | 20000 / 3 | 心跳与判死阈值(连续失败 → SSH_TIMEOUT_IDLE) |
retries | 2 / 500 / 5000 / true | 仅对 retryable 错误重试,指数退避 + 抖动 |
hostKey.policy | accept-new | strict(首连必须人工确认)/ accept-new / insecure |
hostKey.knownHostsFile | '' → /known_hosts | OpenSSH 兼容;支持 ` |
sftp.chunkBytes / maxConcurrentChunks | 262144 / 4 | 分块大小与并发分块数 |
sftp.resume / sftp.verify | true / size+mtime | 断点续传与校验(none/size+mtime/sha256) |
secrets.provider / envPrefix | credentials / DSH_SSH_ | 凭据来源;环境变量优先级最高且只读 |
logging.redact / redactKeys | true / […] | 三层脱敏中的日志层 |
maxOutputBytes | 262144 | 单命令输出上限(超限保留头尾并置 truncated) |
ui.defaultWidthPx / terminalFontSize | 420 / 13 | 侧栏宽度与终端字号 |
凭据永远不落配置文件:密码/passphrase 走 ctx.credentials,或用一次性内存凭据(connect 的 secrets),或 DSH_SSH_ _PASSWORD 环境变量(只读、UI 显示 source:'env')。UI 与日志中只会出现固定 8 个圆点的掩码。
3. UI 使用
实测状态(2026-09-27,真实浏览器 + 真机
203.0.113.10):连接与交互式终端已端到端打通 —— console 首行 markerssh-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 需重新输入;属平台能力缺失,非插件缺陷。
- 打开右侧栏:点侧栏底部 SSH 动作(
sidebar.footer.action),或会话输入框左侧的 SSH 图标;Ctrl/Cmd+Shift+S亦可。 - 新建连接(
Ctrl/Cmd+T):填 名称 / 主机 / 端口 / 用户 / 认证方式;测试连接(conn.test)会显示延迟、服务端 banner 与主机密钥指纹。 - 首次连接:策略为
strict时弹指纹确认;accept-new自动记住到known_hosts;指纹变化一定触发二次确认(SSH_HOSTKEY_MISMATCH)。 - 连接后进入会话工作区,四个标签:
- 终端:真 PTY,跑
top/vim等全屏程序正常,支持复制粘贴、清屏、字号、重连; - 命令:单命令 stdout/stderr/退出码/耗时,历史上下翻;
- 文件:远端目录浏览、上传/下载(进度、断点续传、校验)、新建/重命名/删除/chmod;
- 日志:本会话审计(脱敏后),可导出。
- 终端:真 PTY,跑
- 多会话标签(
Ctrl/Cmd+1..9跳转、Ctrl/Cmd+W关闭并二次确认),状态栏显示延迟、连接时长、流量。 - 断开:状态栏
断开,或关标签。快捷键总表见 ICD §8.4。