使用 openssl 将 SSH2 RSA 私钥转换为 .pem

Upp*_*rla 6 openssl ssh-keygen

当我尝试使用opensslSSH2 RSA将基于格式的私钥转换为格式时,出现以下错误。.pem

[jbadmin@xxxxxxx .ssh2]$ openssl req -x509 -key /home/jbadmin/.ssh2/id_rsa_2048_a -nodes -days 365 -newkey rsa:2048 -out id_rsa_2048_a.pem
unable to load Private Key
139994671441736:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY
Run Code Online (Sandbox Code Playgroud)

我的私钥:

[jbadmin@xxxxxx.ssh2]$ cat id_rsa_2048_a
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Subject: jbadmin
Comment: "2048-bit rsa, jbadmin@x01bicallapp1a, Tue Dec 29 2015 11:38:\
----------------------------
----------------------------
---- END SSH2 ENCRYPTED PRIVATE KEY ----
Run Code Online (Sandbox Code Playgroud)

如果有其他方法可以使用opensslssh-keygen-g3来完成此操作,请建议我

EDIT1:尝试了以下选项,仍然是同样的问题

[jbadmin@x01bicallapp1a .ssh2]$ openssl rsa -outform PEM -in /home/jbadmin/.ssh2/id_rsa_2048_a -out /home/jbadmin/.ssh2/id_rsa_2048_a.pem
unable to load Private Key
140493432293192:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY
Run Code Online (Sandbox Code Playgroud)

sim*_*lev 7

ssh-keygen -p可以在 SSH2 和 PEM 格式之间进行转换:

\n
 -m key_format\n         Specify a key format for key generation, the -i (import),\n         -e (export) conversion options, and the -p change\n         passphrase operation.  The latter may be used to convert\n         between OpenSSH private key and PEM private key formats.\n         The supported key formats are: \xe2\x80\x9cRFC4716\xe2\x80\x9d (RFC 4716/SSH2\n         public or private key), \xe2\x80\x9cPKCS8\xe2\x80\x9d (PKCS8 public or private\n         key) or \xe2\x80\x9cPEM\xe2\x80\x9d (PEM public key).  By default OpenSSH will\n         write newly-generated private keys in its own format, but\n         when converting public keys for export the default format\n         is \xe2\x80\x9cRFC4716\xe2\x80\x9d.  Setting a format of \xe2\x80\x9cPEM\xe2\x80\x9d when generating or\n         updating a supported private key type will cause the key to\n         be stored in the legacy PEM private key format.\n
Run Code Online (Sandbox Code Playgroud)\n

从 SSH2 到 PEM:

\n
ssh-keygen -p -f id_rsa -m PEM\n
Run Code Online (Sandbox Code Playgroud)\n

从 PEM 到 SSH2:

\n
ssh-keygen -p -f id_rsa -m SSH2\n
Run Code Online (Sandbox Code Playgroud)\n

警告:指定的文件被覆盖并就地更新!

\n

注意:虽然ssh-keygen-g3链接到商业产品,但ssh-keygen它是更常见的开源对应产品。您可以在您的系统上免费获取它,它适用于 Linux、Windows、FreeBSD 和 PASE 等。如果您愿意,您可以在具有该转换的系统上执行转换:毕竟 SSH2/PEM 密钥只是纯文本文件,只需小心不要将它们遗漏即可。

\n


Upp*_*rla 1

解决方案:我使用以下命令使其工作

$ ssh-keygen-g3 --key-format openssh2  --import-private-key /home/jbadmin/.ssh2/id_rsa_2048_a /home/jbadmin/.ssh2/id_rsa_2048_a_openssh.pem
Imported private key in /home/jbadmin/.ssh2/id_rsa_2048_a to /home/jbadmin/.ssh2/id_rsa_2048_a_openssh.pem.
Run Code Online (Sandbox Code Playgroud)