转换 OpenSSH 私钥为RSA PEM格式

使用ssh-keygen生成的秘钥发现变成了如下格式:

-----BEGIN OPENSSH PRIVATE KEY-----  
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAA...  
-----END OPENSSH PRIVATE KEY-----

这是一种新的密钥格式, 而且很多软件对这种格式的密钥都是不支持的。比如我常用的git图形化操作软件gitkraken遇到这种密钥就会提示

Configured SSH key is an invalid format. 
Please ensure that your key is valid and is an RSA-type key 

这时候, 就不得不把我的私钥转换成RSA – PEM格式。然而, ssh-keygen并不提供这种格式转换的功能。经过多番查找, 我找到了如下行之有效的方法:
我的电脑是mac系统, 所以如下操作是基于mac系统的。

一, 下载安装putty( .tar.gz文件可以 linux和windows上使用, 源码,需要编译后使用)

putty下载地址 : https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

二, 使用puttygen软件, 先将私钥换为SSHv2格式, 作为一个中转格式

注: 执行之前, 为了以防错误操作, 先把原来的私钥备份一下
执行 : puttygen 旧的密钥地址x -O private-sshcom -o 新的密钥地址y
注意, 上面的命令中, 第一个参数是大写字母’欧’, 第二个参数是小写字母’欧’
执行完毕后, 会发现SSHv2格式的密钥是如下的样子

---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ---- 
c3Bl23423sfdfadjEAAAAABG5vbmUAAAA...  
---- END SSH2 ENCRYPTED PRIVATE KEY ----

三, 使用ssh-keygen软件, 将中转的SSHv2格式的密钥, 转换为最终的RSA – PEM格式

执行: ssh-keygen -i -f 新的密钥地址y > 最终密钥z
此时, 最终密钥z就是像如下这样, 是我们最终想要的格式了。

-----BEGIN RSA PRIVATE KEY-----
xfKaBuPRCPEQ8Uc3UdyMrIXjvKGos3g...  
-----END RSA PRIVATE KEY-----

本文内容参考了一篇英文博客, 地址如下:
How-to : Convert OpenSSH private keys to RSA PEM

希望可以帮助到你。

你可能感兴趣的:(日常问题)