ssh-keygen -t rsa
当我在 Windows 和旧 Mac 上执行时,我得到一个 38 行的id_rsa
文件。
当我在新 Mac 上执行相同的命令时,我得到一个 27 行的文件。
我只是想知道为什么我得到不同的结果?
以下是在我的旧电脑上生成的密钥的示例:
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
<redacted>
CyL+jJfbBajg0AAAAXamFtZXNkb2xkaXNzZW5AamFtZXNtYWMBAgME
-----END OPENSSH PRIVATE KEY-----
而在较新的版本中:
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
<redacted>
eooc0bZ1A6i0/nvoSwAAABVkb2xkaXNqYUBDMDJXNjBFWEhURDgBAgME
-----END OPENSSH PRIVATE KEY-----
答案1
使用ssh-keygen -l -f filename
到查看关键细节。
为了“在旧电脑上生成的密钥”, 你会得到:
3072 SHA256:oOI4YwCA2Yu1qJJ7dCM2pH5f49gUbJs0Kl5kDL7KNDI [email protected] (RSA)
以及关键“在较新的”:
2048 SHA256:7uJvPe1MKKcfWpIGo3Mr4x5zNHZAXL3Y92C5rzZVBDs [email protected] (RSA)
因此密钥的位数不同。OpenSSH 自 8.0 版起生成 3072 位密钥。旧版本(自 4.0 版起)生成 2048 位密钥。尽管两个密钥都是BEGIN OPENSSH PRIVATE KEY
,但即使是生成 2048 位密钥的机器也必须至少有 7.8。
不同 OpenSSH 版本可能导致的另一个差异是默认密钥格式。请参阅相关问题:ssh-keygen [-o] 有什么作用?
但这里的情况并非如此,因为两个键都是“新”OPENSSH PRIVATE KEY
格式。