如何在 ubuntu 20.04 中将 RFC4716 私钥转换为 PEM 私钥?
对于我们的项目,我们在运行最新 openssh 软件的设备上生成 ssh 密钥。 JSch 抱怨身份验证:
异常 com.jcraft.jsch.JSchException:身份验证失败
经过大量研究,包括构建一个最小的 git 客户端,我们发现其他关键文件发生了一个小变化。标题不是以
—–开始RSA私钥—–
但它开始于
——开始打开 SSH 私钥——
显示该密钥采用新的默认 RFC4716 格式进行格式化。
我在这里有同样的问题,但我想使用我的原始密钥而不是重新生成密钥。而且我不想使用像 PuTTY 这样的 GUI 应用程序。我想将其转换为脚本。
我尝试了几次尝试,但没有一个有效:
ssh-keygen -f id_rsa -m 'PEM' -e
ssh-keygen -f id_rsa -e -m pem
# I got PUBLIC KEY instead of private key
openssl rsa -in ~/.ssh/id_rsa -outform pem
openssl rsa -in id_rsa -pubout -out id_rsa.pub.pem
openssl rsa -in ~/.ssh/id_rsaunable to load Private Key
# unable to load Private Key
# 139920849113728:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
我该如何转换它?
答案1
$ cat /tmp/test
-----BEGIN OPENSSH PRIVATE KEY-----
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
1yWVGKN2wVIFLjAAAACWppcmlAdDUwMAE=
-----END OPENSSH PRIVATE KEY-----
$ ssh-keygen -p -f /tmp/test -m PEM
Key has comment 'jiri@t500'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
$ cat /tmp/test
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----