1 -请在您的密钥中使用 >= 2048 位以保护到 ~2025。
以上来自 2012 年,但我在尝试为 Putty / Linux 服务器连接创建 ssh-rsa 密钥时遇到了它。
我刚刚解决了以正确格式创建公共 ssh-rsa 密钥以匹配 PuttyGen 的类似问题。
对于 Microsoft .net RSACryptoServiceProvider,它看起来像这样
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(3072);
byte[] sshrsa_bytes = Encoding.Default.GetBytes("ssh-rsa");
byte[] n = RSA.ExportParameters(false).Modulus;
byte[] e = RSA.ExportParameters(false).Exponent;
string buffer64;
using (MemoryStream ms = new MemoryStream())
{
ms.Write(ToBytes(sshrsa_bytes.Length), 0, 4);
ms.Write(sshrsa_bytes, 0, sshrsa_bytes.Length);
ms.Write(ToBytes(e.Length), 0, 4);
ms.Write(e, 0, e.Length);
ms.Write(ToBytes(n.Length+1), 0, 4); //Remove the +1 if not Emulating Putty Gen
ms.Write(new byte[] { 0 }, 0, 1); //Add a 0 to Emulate PuttyGen (remove it not emulating)
ms.Write(n, 0, n.Length);
ms.Flush();
buffer64 = Convert.ToBase64String(ms.ToArray());
}
string pubssh = string.Format("ssh-rsa {0} generated-key", buffer64);
您可以查看我用于测试的私钥和 putty gen 源代码链接https://www.cameronmoten.com/2017/12/21/rsacryptoserviceprovider-create-a-ssh-rsa-public-key/
我在微软工作,但这是个人答案,不是微软的答案。
BouncyCastle 的原始帖子(链接)