ssh-keygen忽略-t参数

时间:2018-09-28 03:41:04

标签: ssh-keygen

我正在尝试使用以下命令生成新的密钥对

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类型密钥?

1 个答案:

答案 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,这可能会造成混淆。)如果您对这些密钥文件的安全性感兴趣,我将介绍其中的一些内容。有关该主题的现有问题;我确定我至少看过一打。