为 swift-nio-ssh 添加 RSA 支持的避坑指南

Adding RSA Support to swift-nio-ssh

为 swift-nio-ssh 添加 RSA 支持的避坑指南

swift-nio-ssh 原生不支持 RSA,只推崇 ed25519,但这让依赖 Amazon EC2 旧密钥的 LogRaker 陷入困境。为了兼容那些无法更换的 RSA 密钥,我们不得不 fork 该项目。过程中最大的陷阱在于:RSA 的密钥标签 ssh-rsa 与签名算法名称 rsa-sha2-512 并不相同。若将两者混用,即便签名正确,服务器也会直接拒绝连接。我们通过在代码中严格区分这两个字段,并添加自动化测试确保字节级一致,最终解决了问题。虽然维护一个安全相关的 fork 风险巨大,但在现实约束下,这是唯一可行的方案。

这是你通过写出两个缓冲区并比对差异才能发现的 Bug:每个字节都格式正确,密钥无误,签名也是有效的 RSA 签名,但服务器依然拒绝连接。

同日更多故事

2026-11-13