@youverus/dsh-ssh
v0.6.1
Published
Remote SSH operations for dsh: host store (~/.dsh/youverus-ssh.json), persistent ssh2 connection pool, exec, and agent tools (ssh_list / ssh_exec). SFTP, tunnels, cluster, and the web UI half are on the roadmap.
Downloads
769
Readme
@youverus/dsh-ssh — 远程 SSH 运维插件(dsh)
对标 @linxin666/dsh-ssh 的自研实现。当前版本:主机配置库 + ssh2 持久连接池
- 远程命令执行 + Agent 工具。
能力(当前)
| 能力 | 说明 |
| --- | --- |
| 主机配置 | ~/.dsh/youverus-ssh.json(版本化 JSON、原子写入、0600);密钥 / 密码认证、passphrase 密钥 |
| 持久连接池 | 每别名复用长连接,keepalive 15s,空闲 30 分钟自动断开,断线重连(最多 3 次) |
| 命令执行 | ssh_exec:超时(默认 60s)、stdout/stderr 分离、输出截断保护(2MB) |
| Agent 工具 | ssh_list / ssh_exec |
| Web GUI | 侧边栏「SSH」入口(DOM 注入 + 自愈);面板顶部菜单切换五个功能页:主机 / 终端 / 隧道 / 文件 / 命令(各自独立滚动,终端页自适应填充);路由 /api/youverus-ssh/*(仅 loopback);客户端 bundle 纯 DOM 零外部依赖 |
| 配置导入 | 一键解析标准 ~/.ssh/config(Host/HostName/User/Port/IdentityFile/ProxyJump),已存在别名跳过;无 IdentityFile 时仿 OpenSSH 默认密钥行为探测 ~/.ssh/id_ed25519/id_rsa |
| 主机编辑 / 测试 | PATCH 路由合并更新;连接测试(复用连接池,仅握手不执行命令),GUI 每主机「测」按钮内联显示结果 |
| Web 终端 | xterm.js + WebSocket PTY:面板选主机点「连接」即得交互终端;多会话——每次「连接」新开一个标签(独立 xterm 实例 + 独立连接),标签切换、单关、状态行汇总;独立连接(不占连接池)、xterm-256color、自适应尺寸(FitAddon + resize 帧)、发送缓冲背压(1MB 高水标暂停 / 512KB 恢复) |
| 端口转发隧道 | 本地端口转发(ssh -L 语义):远端数据库/内网服务映射到本机 127.0.0.1;本地端口可自动分配;pinned 连接防清扫;GUI「隧道」区块 + /tunnel 路由 + ssh_tunnel Agent 工具(list/open/stop) |
| SFTP 传输 | GUI「文件」区块:远端目录浏览(点目录进入、上级返回)、多文件上传(NDJSON 进度帧、远端父目录自动创建)、文件下载(浏览器保存);ssh_upload / ssh_download Agent 工具(宿主本地路径语义);上传走暂存目录($TMPDIR/youverus-ssh-uploads),上限 4GB |
Roadmap
- [ ] ProxyJump 多级跳板(engine.connectChain,参考 @linxin666/dsh-ssh;导入器已保留 proxyJump 字段)
- [ ] 集群并发执行
- [ ] GUI 主机编辑表单(PATCH 路由已就绪)
- [ ] 上传目录递归 / 下载目录打包(当前逐文件)
安全模型
- 密码 / 口令明文存于用户主目录私有文件(0600),与 ssh-skill 同一信任模型。
ssh_list输出经过summarize()脱敏,不含任何密钥材料。- 远程命令输出原样返回(不脱敏),注意
env等命令可能带回敏感信息。
开发
pnpm --filter @youverus/dsh-ssh build # tsc: src/ -> lib/
dsh plugin --profile web add link:$(pwd) # 在本包目录执行
dsh web # 重启生效