XuzandClaude Opus 5 f0d66c4f8b 用系统钥匙串保存 SSH 密码与私钥口令
会话对话框新增密码字段和私钥口令字段,填一次之后连接就不再弹认证框。
秘密存进系统钥匙串(keyring 4:macOS Keychain / Windows 凭据管理器 /
Secret Service),数据库里依然不出现任何秘密。

- 新增 secrets 模块:SecretRef 按 user@host:port 归属密码、按文件路径
  归属私钥口令,所以会话改名、复制都不丢,同一把钥匙只问一次。
  SecretStore 的方法全是阻塞的,只能在后台执行器或传输层工作线程上调用。
- SSH 认证在弹框前先查钥匙串;被服务器拒绝时退回弹框并说明原因,条目
  保留不动,因为那是用户在对话框里填的。
- 写入的唯一入口是 SessionStore::save_secret,失败沿用 PersistFailed。
  会话换端点或被删除时,用 password_in_use 判断旧条目是否还有人用。
- 对话框的预填是异步的,*_loaded 置上之前空字段不算「用户清空了」,
  预填还没回来就点保存不会误删。
- 修正 CLAUDE.md / AGENTS.md 里「SSH 仍是 mock」的过期描述。

测试服务端原先对错误密码返回 UnsupportedMethod,russh 会因此摘掉密码
方式,真实服务器不是这个行为;改成 OpenSSH 那样拒绝但保留密码方式。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Ub6VpmWWAJB15MnYLT9G5
2026-09-12 10:23:22 +08:00
2026-09-12 09:33:59 +08:00
2026-09-12 09:33:59 +08:00
2026-09-11 20:41:07 +08:00
2026-09-11 20:41:07 +08:00
2026-09-12 09:33:59 +08:00
S
Description
High-performance native SSH client in Rust, GPU-rendered with GPUI: host manager, terminal, WinSCP-style SFTP and port forwarding. Rust 编写、GPU 渲染的原生 SSH 客户端。
https://shellrs.com
GPL-3.0
14 MiB
0 Stars 1 Watchers 0 Forks
ShellRS 0.1.8
Latest
2026-10-11 08:40:38 +00:00
Languages
Rust 99.8%
Shell 0.1%