身份与安全
高级凭据管理与加密架构
安全是任何 SSH 客户端的首要责任。Netcatty 的 钥匙串 (Keychain) 旨在平衡军用级加密与 DevOps 专家所需的运营灵活性。
本指南将探讨身份 (Identity) 的架构、密钥管理的细节、加密标准以及通过证书进行的组件集成。
身份架构
在早期的 SSH 客户端中,凭据通常与特定的连接绑定。你将密码保存在“服务器 A”的配置内。如果你有 100 台服务器并更改了密码,你必须编辑 100 个条目。
Netcatty 将 访问 (Access)(即主机)与 认证 (Authentication)(即身份)进行了解耦。
“多对多”模型
- 身份 (Identities) 全局存在于钥匙串中。
- 主机 (Hosts) 通过 ID 引用某个身份。
- 一个身份 可以被 无限个主机 使用。
这实现了“基于角色的身份”概念:
身份:个人 Root(使用你的个人密钥)-> 用于 50 台开发服务器。身份:紧急状态(使用共享的高级密钥)-> 用于 10 台生产服务器。身份:只读(使用受限的服务账号) -> 用于 200 个监控节点。
密钥管理
钥匙串支持全系列现代 SSH 认证方式。
1. SSH 密钥 (黄金标准)
Netcatty 包含功能完善的密钥生成器后端。你不再需要进入终端运行 ssh-keygen。
支持的算法:
- ED25519 (推荐): 现代标准,速度快,安全且密钥紧凑。
- ECDSA: NIST 标准椭圆曲线 (P-256, P-384, P-521)。
- RSA: 兼容旧系统(建议最小 2048 位,支持 4096 位)。
导入密钥: 你可以直接将现有的 PEM、PKCS#8 或 OpenSSH 格式的私钥拖放到钥匙串中。Netcatty 会解析、验证密码并将其加密存入保险库。

2. 密码
虽然推荐使用密钥认证,但密码在初始设置或遗留硬件中依然常见。当保存在身份中时,密码在本地保险库中是加密存储的,输入后绝不会以明文显示。
3. SSH Agent (系统集成)
Netcatty 与系统的原生 SSH Agent 配合使用(macOS/Linux 上的 ssh-agent,Windows 上的 Pageant/OpenSSH)。与存储特定凭据的身份不同,Agent 集成允许 Netcatty 请求外部硬件令牌(如 Yubikey)或系统级安全(TouchID/Windows Hello)生成的签名,而应用本身无需接触私钥。
SSH 证书 (企业级)
对于大型团队,管理原始密钥是不可扩展的。Netcatty 支持 签名 SSH 证书 (Signed SSH Certificates)。
工作流:
- 你所属的组织拥有一个证书颁发机构 (CA)。
- 你生成一个用户密钥。
- CA 对你的公钥进行签名并返回一个
id_rsa-cert.pub文件。 - 在 Netcatty 中:
- 加载你的私钥。
- 将 证书文件 关联到该身份。
在连接时,Netcatty 会首先出示证书。服务器验证 CA 签名并允许访问,而无需在 ~/.ssh/authorized_keys 中预先存储你的特定公钥。
安全标准
Netcatty 对安全的承诺核心在于用户的数据主权。
零知识架构 (Zero-Knowledge)
当使用 云同步 时,所有敏感字段(密码、私钥内容)在离开你的设备之前,都会使用 AES-256-GCM (Galois/Counter Mode) 进行加密。
主密钥派生
对于同步的数据,加密密钥是通过你的 主密码 (Master Password) 使用 PBKDF2 算法派生的,并经过了 600,000 次迭代。这极大地增加了暴力破解的计算成本。
丢失主密码
因为我们使用零知识加密,没有“忘记密码”重置功能。如果你丢失了主密码,你的数据在数学上是无法恢复的。我们建议将其存储在安全的密码管理器(如 1Password, Bitwarden)中。
最佳实践
1. 为密钥设置密码 (Passphrase)
即使 Netcatty 对存储的密钥进行了加密,你最好还是在生成密钥时设置一个密码。Netcatty 会在第一次连接时提示你输入(并可以在会话期间将其缓存在内存中)。这提供了“深度防御”。
2. 隔离身份
不要在“家庭实验室”和“工作生产环境”中使用相同的身份。创建具有不同密钥的独立身份。这可以在某个密钥泄露时最大限度地减少受影响范围。
3. 轮换凭据
定期轮换你的密钥:
- 生成一个新身份 "Prod 2026"。
- 使用 广播模式 将新公钥推送到所有服务器。
- 更新主机配置以使用 "Prod 2026"。
- 撤销旧密钥。