← 返回博客列表
安全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 包通信相关的细节
我们的承诺是:除了你主动告诉我们的,我们什么都不知道。

同类阅读

评论功能未启用(需要环境变量 NEXT_PUBLIC_UTTERANCES_REPO=owner/repo)