身份与安全

高级凭据管理与加密架构

安全是任何 SSH 客户端的首要责任。Netcatty 的 钥匙串 (Keychain) 旨在平衡军用级加密与 DevOps 专家所需的运营灵活性。

本指南将探讨身份 (Identity) 的架构、密钥管理的细节、加密标准以及通过证书进行的组件集成。

身份架构

在早期的 SSH 客户端中,凭据通常与特定的连接绑定。你将密码保存在“服务器 A”的配置内。如果你有 100 台服务器并更改了密码,你必须编辑 100 个条目。

Netcatty 将 访问 (Access)(即主机)与 认证 (Authentication)(即身份)进行了解耦。

“多对多”模型

  • 身份 (Identities) 全局存在于钥匙串中。
  • 主机 (Hosts) 通过 ID 引用某个身份。
  • 一个身份 可以被 无限个主机 使用。

这实现了“基于角色的身份”概念:

  • 身份:个人 Root(使用你的个人密钥)-> 用于 50 台开发服务器。
  • 身份:紧急状态(使用共享的高级密钥)-> 用于 10 台生产服务器。
  • 身份:只读(使用受限的服务账号) -> 用于 200 个监控节点。
Loading diagram...

密钥管理

钥匙串支持全系列现代 SSH 认证方式。

1. SSH 密钥 (黄金标准)

Netcatty 包含功能完善的密钥生成器后端。你不再需要进入终端运行 ssh-keygen

支持的算法:

  • ED25519 (推荐): 现代标准,速度快,安全且密钥紧凑。
  • ECDSA: NIST 标准椭圆曲线 (P-256, P-384, P-521)。
  • RSA: 兼容旧系统(建议最小 2048 位,支持 4096 位)。

导入密钥: 你可以直接将现有的 PEM、PKCS#8 或 OpenSSH 格式的私钥拖放到钥匙串中。Netcatty 会解析、验证密码并将其加密存入保险库。

生成新的 ED25519 密钥

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)

工作流:

  1. 你所属的组织拥有一个证书颁发机构 (CA)。
  2. 你生成一个用户密钥。
  3. CA 对你的公钥进行签名并返回一个 id_rsa-cert.pub 文件。
  4. 在 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. 轮换凭据

定期轮换你的密钥:

  1. 生成一个新身份 "Prod 2026"。
  2. 使用 广播模式 将新公钥推送到所有服务器。
  3. 更新主机配置以使用 "Prod 2026"。
  4. 撤销旧密钥。