找出使用ssh-keygen生成的密钥类型是ssh-rsa还是rsa-sha2-256



在您花费时间阅读该问题之前:该问题基于错误的假设(SSH密钥具有签名类型(,并且没有提供任何值,正如已接受的答案中所解释的那样。

原始问题

当我使用生成SSH密钥对时

ssh-keygen -t ssh-rsa -m PEM -f testkey-ssh-rsa.key

密钥是使用ssh-rsa签名类型生成的。如果我将类型参数(-t(更改为rsa-sha2-256

ssh-keygen -t rsa-sha2-256 -m PEM -f testkey-rsa-sha2-256.key

密钥是使用rsa-sha2-256签名类型生成的。

如果可能的话,我如何从生成的文件中追溯出哪个密钥类型用于生成文件?任何解决方案(编程的或基于工具的(都可以。我尝试过ssh-keygen,但它并没有显示出区别。

ssh-keygen -l -f testkey-ssh-rsa.key

输出

3072 SHA256:0U8VbIePF+o5BHRgVGlaBiNFT9huV7brijuKD7xpxmgsimon@MB.local(RSA(

ssh-keygen -l -f 

输出

3072 SHA256:5wLSugVJTXjdS4cKeWj3tH5KqXX03VNkgaKLGpU+C1Asimon@MB.local(RSA(

如果我了解来自这个超级用户问答的信息;正确地说,两者都有相同的密钥类型,并且在进行身份验证握手时,它们的签名格式不同,尽管现代SSH客户端会自动使用RSA密钥协商签名类型。签名类型在颁发证书时也相关,但在生成纯密钥时不相关。该命令的-l选项显示密钥的指纹,以及用于生成指纹的哈希算法(sha256(。

如果您生成的是纯密钥而不是签名证书,那么可能没有什么区别(我只是试图解释引用的帖子——我在这里可能完全错了(。

最新更新