ssh-keygen 忽略 -t 参数

ssh-keygen ignoring -t parameter

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

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

元:这不是编程问题或问题,可能属于不同的堆栈,但我不确定是哪一个,所以我会把它留给任何想提出建议的人。

-t 选择 key 的类型(又名算法),不一定是 file 的格式存储在(除了长期过时且现已删除的类型 rsa1,它与 SSH1 格式相关联)。您可能有 7.8,默认情况下所有类型都使用 'new' 文件格式,而在此之前它仅适用于 ed25519。新文件格式确实(并且已经)支持所有类型,但在旧版本中仅当您指定 -o 时才用于其他类型。 See the release notes 描述了如何返回到 'legacy' 格式,或 -m.

下的 ssh-keygen 手册页

注意 OpenSSH 新格式使用比 OpenSSL 的旧 PEM 格式(以前的默认格式)更好的 PBE(基于密码的加密)方案。 OpenSSH 还能够读取(虽然不能创建)PKCS8 加密的 PEM 格式,您可以使用 OpenSSL(ed25519 除外)创建或转换该格式,并且更好但仍不如 OpenSSH 新格式。 (警告:ssh-keygen -m PKCS8 用词不当,实际上使用的是 X.509/PKIX SPKI 格式而不是 PKCS8,这可能会造成混淆。)如果您对这些密钥文件的安全性感兴趣,我将挖掘一些关于该主题的现有问题;我确定我至少看过一打。