我正在尝试使用以下命令生成新的密钥对
ssh-keygen -t rsa -f id_rsa
根据联机帮助页,-t
参数应指示密钥的格式:
ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa] [-N new_passphrase] [-C comment] [-f output_keyfile]
[...]
The type of key to be generated is specified with the -t option. If invoked without any arguments, ssh-keygen will generate
an RSA key.
[...]
-t dsa | ecdsa | ed25519 | rsa
Specifies the type of key to create. The possible values are “dsa”, “ecdsa”, “ed25519”, or “rsa”
但是,该命令仍会以更新的ed25519
格式输出密钥:
$ head id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
[...]
如何生成正确的RSA类型密钥?
答案 0 :(得分:3)
元:这不是编程问题,可能属于不同的Stack,但是我不确定是哪一个,因此我会将其留给任何想提出建议的人。
-t
选择 key 的类型(又称算法),不一定选择存储在其中的 file 的格式(与SSH1格式相关联的类型rsa1
已过时且现在已删除)。您可能有7.8,默认情况下所有类型都使用“新”文件格式,而之前仅ed25519才使用默认格式。新文件格式支持(并且已经支持)所有类型,但是在旧版本中,仅当您指定-o
时才用于其他类型。 See the release notes描述如何恢复为“旧版”格式,或者介绍ssh-keygen
下的-m
手册页。
请注意,OpenSSH新格式比以前的默认OpenSSL传统PEM格式使用了更好的PBE(基于密码的加密)方案。 OpenSSH还能够读取(尽管不创建)PKCS8加密的PEM格式,您可以使用OpenSSL创建或转换该格式(ed25519除外),它虽然更好,但仍然不如OpenSSH新格式。 (警告:ssh-keygen -m PKCS8
用词不当,实际上使用的是X.509 / PKIX SPKI格式而不是PKCS8,这可能会造成混淆。)如果您对这些密钥文件的安全性感兴趣,我将介绍其中的一些内容。有关该主题的现有问题;我确定我至少看过一打。