本指南详细介绍了一种在每个仓库基础上安全管理 SSH 部署密钥的方法,避免从错误账户意外推送。与其全局管理多个 SSH 密钥,不如将私钥存储在每个仓库的 `.git` 目录*内*。 首先,初始化一个本地仓库并配置它使用特定的 SSH 命令:`git config core.sshCommand "ssh -i .git/id_ed25519"`。 然后生成一个新的密钥对并将其存储在 `.git` 文件夹内。 相应的*公钥*作为部署密钥添加到远程仓库(例如,在 GitHub 上)。 此设置确保每个仓库使用其专用的密钥进行身份验证。它是自包含的——包含密钥的仓库可以移动或复制而无需重新配置。 这消除了不断切换 SSH 密钥的需求,并降低了使用错误身份推送更改的风险。
一种新的浮点数到十进制转换方法“zmij”已被开发,在性能上显著优于现有算法。它借鉴了Dragon4、Grisu和Schubfach等先前实现中的经验教训,优先去除不必要的操作——秉承“不做任何工作比做一些工作更好”的原则。
性能基准测试表明,“zmij”比Dragonbox(一种先前领先且具有正确性证明的算法)快约68%,比Schubfach快两倍,比`std::to_chars`快3.5倍,比Google的double-conversion快6.8倍,甚至比`sprintf`快59倍。现在,在Apple M1硬件上转换单个double大约需要10-20纳秒。
关键改进包括减少候选选择、减少整数乘法、更快的对数近似、减少条件分支以及更高效的输出处理。对数使用32位近似以及无分支处理不规则舍入间隔等优化措施有助于提高速度。代码可在GitHub上找到([https://github.com/vitaut/zmij](https://github.com/vitaut/zmij)),并计划集成到{fmt}以及可能通过ISO C++ P2587集成到std::to_string中。目前,它仅支持指数格式,固定格式支持计划中。
## 2025年的密码密钥:仍然不是完美的解决方案
在最初的炒作过去一年多后,密码密钥仍然面临显著问题,尽管行业领导者将质疑视为缺乏理解。虽然像FIDO凭证交换规范这样的改进存在,但它们主要促进了在主要平台生态系统(苹果、谷歌)*之间*的切换,而不是为同时使用多种设备的普通用户提供真正的跨平台可用性。
核心问题仍然是厂商锁定。平台密码密钥管理器优先考虑自己的系统,当用户尝试使用替代方案时会产生摩擦。至关重要的是,用户需要理解并主动管理他们的**凭证管理器**(例如Bitwarden或Vaultwarden)——密码密钥*存储*的位置——并确保他们有备份以避免永久锁定帐户。仅依赖平台管理器存在风险,因为备份选项有限。
误解仍然存在;许多人认为密码密钥涉及共享生物识别数据,从而破坏信任。开发者也经常限制用户选择,强制使用平台绑定的密码密钥。对于像电子邮件这样重要的帐户,硬件安全密钥(Yubikeys)以及强大的密码/TOTP仍然是最安全的恢复途径。
最终,密码密钥并非失败,但需要知情的用户,并侧重于赋予他们对其凭证的控制权。关于凭证管理器的教育是关键,而不仅仅是推广“神奇”的平台解决方案。