ssh-keygen - ssh-keygen 忽略 -t 参数
问题描述
我正在尝试使用以下命令生成一个新的密钥对
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 类型密钥?
解决方案
Meta:这不是一个编程问题或问题,可能属于不同的堆栈,但我不确定是哪个,所以我会把它留给任何想要建议移动的人。
-t
选择key的类型(又名算法),不一定是存储它的文件的格式(除了与 SSH1 格式相关的长期过时和现已删除的类型rsa1
)。您可能有 7.8,默认情况下所有类型都使用“新”文件格式,而在此之前,它仅适用于 ed25519。新文件格式确实(并且已经)支持所有类型,但在旧版本中,仅当您指定-o
. 请参阅描述如何返回“旧版”格式的发行说明ssh-keygen
,或-m
.
注意 OpenSSH 新格式使用比 OpenSSL 的旧 PEM 格式(以前的默认格式)更好的 PBE(基于密码的加密)方案。OpenSSH 还能够读取(虽然不能创建)PKCS8 加密的 PEM 格式,您可以使用 OpenSSL(ed25519 除外)创建或转换该格式,并且比 OpenSSH 新格式更好,但仍然不如 OpenSSH 新格式。(警告:ssh-keygen -m PKCS8
用词不当,实际上使用 X.509/PKIX SPKI 格式而不是 PKCS8,这可能会造成混淆。)如果您对这些密钥文件的安全性感兴趣,我将挖掘一些现有的 Q话题; 我敢肯定我至少见过十几个。
推荐阅读
- xamarin - 带有 OneWay 的 Xamarin 表单可绑定属性不起作用
- azure - 在订阅移动后更新密钥保管库关联的 Azure AD 租户,而无需同步部署所有相关应用
- c# - 获取 WPF 的程序集版本
- performance - 嵌套 While 循环大 O 。估计
- javascript - PHP if (isset) JavaScript 等价物
- android - Android Map GroundOverlay 不显示图像
- c - 如何链接特定的标头函数
- reactjs - 内联条件内的第二层条件语句反应
- angular - 如果 DOM 无论如何都将被删除,是否需要销毁 Angular 组件的 Dragula 实例?
- javascript - 如何使用 expressJS 处理 Fetch api formData 提交