本标题为SSH的教程:将OpenSSH转换为SSH2,反之亦然,这似乎可以提供您所需要的东西。
将OpenSSH密钥转换为SSH2密钥
ssh-keygen
在您的OpenSSH公钥上运行OpenSSH版本,以将其转换为远程计算机上SSH2所需的格式。这必须在运行OpenSSH的系统上完成。
$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub
将SSH2密钥转换为OpenSSH密钥
ssh-keygen
在ssh2公钥上运行OpenSSH版本,将其转换为OpenSSH所需的格式。这需要在运行OpenSSH的系统上完成。
$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > ~/.ssh/id_dsa_1024_a_openssh.pub
本教程将继续展示如何生成各种类型的密钥以及如何将其导出为其他格式。
将此用于私钥和公钥吗?
根据手册页,答案是肯定的。查看手册页ssh-keygen
会显示以下内容-e
:
-e This option will read a private or public OpenSSH key file and print
the key in RFC 4716 SSH Public Key File Format to stdout. This option
allows exporting keys for use by several commercial SSH implementations.
但是在实践中,似乎ssh-keygen
不能转换专用密钥,只能转换公用密钥。
例如:
# Make a new RSA key-pair
$ ssh-keygen -t rsa -f newkey
# attempt to extract the private key
$ ssh-keygen -e -f newkey > newkey_e
# attempt to extract the public key
$ ssh-keygen -e -f newkey.pub > newkey.pub_e
# Notice the supposed extracted private key (newkey_e) and the corresponding extracted public key (newkey.pub_e) have identical `md5sum`'s.
$ for i in *;do md5sum $i;done
d1bd1c12c4a2b9fee4b5f8f83150cf1a newkey
8b67a7be646918afc7a041119e863be5 newkey_e
13947789d5dcc5322768bd8a2d3f562a newkey.pub
8b67a7be646918afc7a041119e863be5 newkey.pub_e
查看结果提取的密钥可以确认这一点:
$ grep BEGIN newkey_e newkey.pub_e
newkey_e:---- BEGIN SSH2 PUBLIC KEY ----
newkey.pub_e:---- BEGIN SSH2 PUBLIC KEY ----
谷歌搜索了一下我从一篇标题为:如何将OpenSSH私钥文件转换为SSH的文章中看到的内容。该网站似乎上下波动,但在Google的缓存页面中,我发现了以下内容:
如何将OpenSSH私钥文件转换为SSH.com私钥文件?
即使大多数手册页都说可以,但ssh-keygen程序无法完成此操作。他们不鼓励这样做,因此您将使用多个公共密钥。唯一的问题是,RCF不允许您注册多个公共密钥。
本文继续介绍一种通过使用PuTTY puttygen
工具将openssh私钥转换为ssh.com私钥的方法。注意: puttygen
可以从Windows和Linux运行。
打开“ puttygen”,并生成一个2048位rsa公钥/私钥对。确保在生成密码后添加密码。将公钥另存为“ puttystyle.pub”,并将私钥另存为“ puttystyle”。Putty程序和SSH.com程序共享公用的公共密钥格式,但是Putty程序和OpenSSH具有不同的公共密钥格式。稍后,我们将回到此。您应该能够将两个puttystyle密钥都加载到putty程序中。但是,腻子和SSH.com的私钥格式不相同,因此您必须创建一个转换后的文件。转到转换菜单并导出SSH.com密钥。将其另存为“ sshstyle”。现在返回转换菜单并导出一个openssh密钥。将其另存为“ openssh”。这些名称是任意的,您可以选择自己的名称。稍后,您将必须更改名称以在OpenSSH机器上安装。见下文。
鉴于以上所述,我puttygen
使用了先前生成的私有/公共openssh密钥对,使用制定了以下内容:
# generate ssh.com private key from private openssh key
$ puttygen newkey -O private-sshcom -o newkey.puttygen-sshcom
# generate ssh.com public key from private openssh key
$ puttygen newkey -O public -o newkey.pub_puttygen-sshcom
# generate openssh public key from private openssh key (for confirmation)
$ puttygen newkey -O public-openssh -o newkey.pub_puttygen-openssh
注释是不同的,因此您不能只比较生成的文件,因此,如果查看键的前几行,则可以很好地表明上述命令已成功执行。
ssh.com公钥的比较:
$ tail -n +3 newkey.pub_e | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb
$ tail -n +3 newkey.pub_puttygen-sshcom | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb
公用openssh密钥的比较:
$ cut -c 1-100 newkey.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY
$ cut -c 1-100 newkey.pub_puttygen-openssh
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY