我正在尝试创建私钥并遇到问题。
当我使用 时ssh-keygen -t rsa -b 4096 -C "[email protected]"
,我得到一个以下格式的私钥。
-----BEGIN OPENSSH PRIVATE KEY-----
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END OPENSSH PRIVATE KEY-----
对于我正在尝试使用的应用程序,这不被接受。
我期待以下 RSA 格式的密钥。
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,25737CC2C70BFABADB1B4598BD8AB9E9
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END RSA PRIVATE KEY-----
如何创建正确的格式?这很奇怪,因为我拥有的所有其他 Mac 都创建了正确的格式,除了我遇到问题的那个。
我在全新安装的 Mac OS Mojave 上
我最近遇到了同样的问题(升级到 mojave 10.14.1 后),这里有 2 个可能的解决方案。
或者
-m PEM
在 ssh-keygen 命令中添加选项。例如,您可以运行ssh-keygen -m PEM -t rsa -b 4096 -C "[email protected]"
以强制 ssh-keygen 导出为PEM
格式。似乎在 mojave 中的当前 ssh-keygen 版本中,默认导出格式是这里
RFC4716
提到的可以使用 ssh-keygen 实用程序将具有 OpenSSH 私钥格式的新密钥转换为旧的 PEM 格式。
没有必要为了达到这个结果而降级到较旧的 OpenSSH。
对上述答案进行了一些阐述,为公钥和私钥提供了一条清晰的路径。
您可以直接将您的 ssh 密钥导出 (-e) 为 pem 格式:
对于您的公钥:
对于您的私钥:
事情有点棘手,因为 ssh-keygen 只允许“原位”更改私钥文件。(即它用新文件替换您的密钥文件)。
所以你可以保留你的旧文件:
鉴于我们只是导出文件,
<new pass phrase>
可以与您的文件相同<old pass phrase>
(除非您想同时更改密码短语)。注意:将您的密码短语作为参数传递给 cli 应用程序是一个坏主意。
安全的方法是:
使用此方法,系统将提示您输入旧密码和新密码。
注意:将您的私钥文件转换为 .pem 后,该文件现在是明文形式,这很糟糕。