沙滩星空的博客沙滩星空的博客

PuTTY的ppk密钥与OpenSSH密钥之间的相互转换

前几天使用 FinalShell 客户端连接SSH时,发现不能识别Linux下生成的私钥格式。
几年前Linux生成的私钥反而还能识别。不能识别私钥时,如下提示:

暂不支持此私钥格式,请参考以下方法解决:
1.转换成PEM格式私钥
ssh-keygen -p -m PEM -f 私钥路径
2.生成PEM格式的私钥
生成时增加 -m PEM参数
ssh-keygen -m PEM -t rsa -C "注释"

发现最近ssh-keygen生成的私钥都变成以 -----BEGIN OPENSSH PRIVATE KEY----- 开头,
而几年前的私钥,以 -----BEGIN RSA PRIVATE KEY----- 开头

方案一:

在Linux服务器,先备份原有RSA私钥,再执行 FinalShell 提示的私钥转换命令。
因为 执行私钥转换新私钥会覆盖原私钥内容

方案二:

使用puttygen先将私钥转为.ppk格式,再转换回来。

例:

tempkey的内容:

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

转换为ppk格式:

puttygen tempkey -o tempkey.ppk

转换回openssh格式:

puttygen tempkey.ppk -O private-openssh -o tempkey.oldformat

tempkey.oldformat的内容:

-----BEGIN RSA PRIVATE KEY-----
MIIJJwIBAAKCAgEAzmmS5aA0....
-----END RSA PRIVATE KEY-----

几个概念说明:id_rsa、id_rsa.pub、ppk、pem
目前有两个主流的密钥格式:OpenSSH格式的密钥 和 PuTTY格式的密钥。

id_rsa和id_rsa.pub
都是OpenSSH格式的密钥。
id_rsa是OpenSSH格式的SSH私钥。
id_rsa.pub是OpenSSH格式的SSH公钥。
ppk文件
ppk文件是Putty的私钥。PuTTY Private Key 的缩写。
但是ppk文件中同时包含了公钥和私钥,可用记事本打开查看。
pem文件
pem文件可以包含任何东西: 具有公共密钥的证书,SSH公钥,公钥私钥,具有公钥私钥的证书。 PEM是一个文本文件,可以用记事本打开。

OpenSSH格式 和 PuTTY格式使用的都比较多,经常拿到其中一种格式,而使用中却需要另一种格式的。这就需要转换。


linux下的相互转换
安装putty工具

sudo apt-get install putty-tools

ppk转换为OpenSSH格式

ppk转私钥

puttygen /path/to/puttykey.ppk -O private-openssh -o ~/.ssh/id_rsa

ppk转公钥

puttygen /path/to/puttykey.ppk -O public-openssh -o ~/.ssh/id_rsa.pub

OpenSSH格式转换为ppk

puttygen keyname -o keyname.ppk


关于ssh-keygen 生成的key以“BEGIN OPENSSH PRIVATE KEY”开头 https://www.cnblogs.com/soner/p/10412888.html
PuTTY的ppk密钥与OpenSSH密钥互相转换 https://www.jianshu.com/p/7818b3ad1d72
SSH私钥新格式(OPENSSH)转换回老格式(RSA)
未经允许不得转载:沙滩星空的博客 » PuTTY的ppk密钥与OpenSSH密钥之间的相互转换

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址