安全2026-05-29·4 分钟阅读
客户端模式 — SSH 私钥永远不离开你的电脑
服务端零知识:11 步部署完全跑在你本机,我们只收「哪一步完成了 / 失败原因是什么」。known_hosts 持久化 + 首次指纹确认 + 字节级 SFTP 进度。
把 SSH 私钥放进任何第三方系统都让人不安。即便对方承诺零信任、端到端加密、3 年审计留存,你也无法保证未来不会发生数据泄露。
所以我们做了客户端模式 — 11 步部署整个跑在你本机 Tauri 客户端里,SSH 私钥存进系统 Keychain(macOS Keychain / Windows DPAPI / Linux Secret Service),服务端永远不接触明文,只接收「哪一步完成了 / 失败原因是什么」的结构化上报。
技术细节
本地 Vault
key 通过 keyring crate 抽象层写入系统 keychain,索引(alias / 创建时间 / 关联项目)走本地 JSON 文件 ~/.ailaunch-desktop/local-vault-index.json,任何敏感数据永远不进 JSON。
SSH known_hosts 持久化
第一次连某 (host, port),把指纹存进 ~/.ailaunch-desktop/known-hosts.json。再次连接对比,不匹配自动拒绝(防中间人攻击)。等价 OpenSSH 默认行为,但管理在我们 UI 里。
字节级 SFTP 上传进度
Rust ssh_upload 改成 256 KiB chunk 流式 + emit 进度 event,前端订阅显示实时 MB/MB 进度条。大文件上传不再「卡 5 分钟无反馈」。
服务端能看到什么?
- 你 prefligh 选了哪个 server / domain / ICP
- 你签了哪些法律护栏条款 + IP + UA + 时间戳
- 11 步每一步的 status / stdout / stderr / extra(用于审计 + 看板)
- 最终 final_status + access_url + failure_reason
服务端看不到什么?
- 你的 SSH 私钥明文
- 你 .env 文件的内容
- 你服务器的密码 / 其他凭据
- 任何与具体 SSH 包通信相关的细节
我们的承诺是:除了你主动告诉我们的,我们什么都不知道。