我正在尝试创建私钥并遇到问题。
当我使用 时ssh-keygen -t rsa -b 4096 -C "your_email@example.com",我会获得以下格式的私钥。
-----BEGIN OPENSSH PRIVATE KEY-----
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END OPENSSH PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用的应用程序不接受这种情况。
我期待以下 RSA 格式的密钥。
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,25737CC2C70BFABADB1B4598BD8AB9E9
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
如何创建正确的格式?这很奇怪,因为我拥有的所有其他 mac 都创建了正确的格式,除了我遇到问题的那个。
我在全新安装的 Mac OS Mojave 上
小智 126
我最近遇到了同样的问题(升级到 mojave 10.14.1 后),这里有两个可能的解决方案。
或者
-m PEM到您的 ssh-keygen 命令中。例如,您可以运行ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"以强制 ssh-keygen 导出为PEM格式。这似乎是在莫哈韦当前SSH-凯基版本,默认的输出格式是RFC4716提到这里
小智 110
可以使用 ssh-keygen 实用程序将具有 OpenSSH 私钥格式的新密钥转换为旧的 PEM 格式。
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
没有必要为了达到这个结果而降级到旧的 OpenSSH。
对上述答案的一些阐述为公钥和私钥提供了清晰的路径。
您可以直接将 ssh 密钥导出 (-e) 为 pem 格式:
对于您的公钥:
cd ~/.ssh
ssh-keygen -e -m PEM -f id_rsa > id_rsa.pub.pem
Run Code Online (Sandbox Code Playgroud)
对于您的私钥:
事情有点棘手,因为 ssh-keygen 只允许“就地”更改私钥文件。(即它用新文件替换您的密钥文件)。
所以你可以保留你的旧文件:
鉴于我们只是导出文件,该文件<new pass phrase>可以与您的相同<old pass phrase>(除非您想同时更改密码短语)。
cd ~/.ssh
cp id_rsa id_rsa.bak
ssh-keygen -p -P "<old pass phrase>" -N "<new pass phrase>" -m PEM -f id_rsa
cp id_rsa id_rsa.priv.pem
cp id_rsa.bak id_rsa
Run Code Online (Sandbox Code Playgroud)
注意:将密码短语作为参数传递给 cli 应用程序是一个坏主意。
安全的方法是:
cd ~/.ssh
cp id_rsa id_rsa.bak
ssh-keygen -p -m PEM -f id_rsa
cp id_rsa id_rsa.priv.pem
cp id_rsa.bak id_rsa
Run Code Online (Sandbox Code Playgroud)
使用此方法,系统将提示您输入旧密码和新密码。
注意:将私钥文件转换为 .pem 后,该文件现在是明文形式,这是不好的。
| 归档时间: |
|
| 查看次数: |
85220 次 |
| 最近记录: |