各种格式SSH 公钥和私钥之间的转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各种格式SSH 公钥和私钥之间的转换相关的知识,希望对你有一定的参考价值。

参考技术A 前天给客户安装环境,没想到在生成SSH密钥上耽误很多时间。

先从一个实验开始吧。

先生成密钥对,公钥为/tmp/key.pub,私钥为/tmp/key。命令行选项中 -t表示key type,-b表示key的bit数,在puttygen中也是使用这样的组合,即RSA, 2048。

这里产生的私钥默认是兼容性更好的PEM格式。如果加-o选项,则生成的是OpenSSH格式的私钥。

这里生成的PEM RSA格式的私钥,可以import到puttygen中生成putty使用的PPK格式的私钥,如下:

顺带说一下,PEM表示Privacy Enhanced Mail,PPK表示PuTTY Private Key。这两种都是私钥格式。PEM实际上是一种特定的BASE64编码。参见这里

将OpenSSH格式公钥转换为SSH2格式,即RFC 4716格式:

将SSH2 格式公钥转换为PEM:

将OpenSSH格式公钥转换为PEM格式:

私钥除了PEM格式,还有一个OpenSSH格式。如文档描述:

使用-p选项可以将PEM和OpenSSH格式互相转换。

总结一下,私钥的格式有PEM, OpenSSH和PPK 3种。公钥的格式有OpenSSH和SSH2两种。

对于私钥,PPK是putty程序用的,这种格式和其它格式的转换通过puttygen来做。puttygen只能import PEM格式的,但可以转换成openssh格式的。PEM和OpenSSH之间的转换通过ssh-keygen -p来做。

对于公钥,OpenSSH,SSH2,PEM之间通过ssh-keygen -e或-i来转换。 ~/.ssh/authorized_keys中存放的公钥是OpenSSH格式。OCI中API Signing Key使用PKCS8格式的公钥。如下:

那天在客户处出现的问题就是因为Oracle公有云(OCI)生成的私钥和私钥都是OpenSSH格式的。所以私钥无法直接导入puttygen,需要先转换为PEM格式才可导入。
————————————————

原文链接: https://blog.csdn.net/stevensxiao/article/details/109381001

以上是关于各种格式SSH 公钥和私钥之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

怎样生成公钥和PKCS8格式私钥

openssl 怎样生成公钥和密钥 x509格式

SSH详解-4.多个ssh公钥

公钥和私钥

ssh连接的时候客户端的公钥存在服务端的啥地方?

使用sshpass 和 ssh-copy-id批量拷贝公钥到远程主机