ssh-keygen .pub格式如何与.pem文件一起使用?


17

ssh-keygen命令生成的.pub文件描述为“公钥文件”,但与我通常看到的大多数“公钥文件”的格式完全不同,它们都是PEM格式。该ssh-keygen风格的文件看起来是这样的:

ssh-rsa AAAAB3NzaC1... user@host

...而PEM文件如下所示:

-----BEGIN CERTIFICATE-----
MIIGZjCCBU6gAwIBAgIDCIrNMA0GCSqGSIb3DQEBBQUAMIGMMQsw...
-----END CERTIFICATE-----

这两种格式是可以互换的,还是执行根本不同的目的?我遇到了这个问题,因为我想获得我的PEM编码的公共密钥文件的RSA2密钥指纹,但是通常建议这样做的方法(ssh-keygen -l)表示我的PEM编码的文件“不是公共密钥文件”。

顺便说一句,我知道这个答案,但是它并不涵盖由生成的.pub文件ssh-keygen


1
嗯,SSH公钥与PEM格式的证书不同。你看过这个吗?serverfault.com/questions/114301/...
CJC

2
重要的是要在这里特别注意,您可能正在查看的是OpenSSH,而不是不太常见的SSH.COM或其他实现。标准PEM编码的公钥实际上对一些不太常见的实现有效。我知道我连接到的VMS盒需要一个PEM文件。
Zoredache

@cjc,对,它不是证书,但它也不是与通过运行获得的内容完全不同的openssl rsa -in privatekey_rsa -pubout,它实际上是一个公共密钥,而不是证书。
Zoredache

Answers:


8

OpenSSH密钥对不是PEM或任何其他x500标准。新版本的OpenSSH可以使用X.509 PEM密钥,但这是与ssh-keygen分开的另一个蜡球,必须进行显式配置。据我所知,没有主要的SSH实现使用与其他任何格式完全相同的密钥格式。

正如Zoredache所 指出的那样,如果您使用的不是OpenSSH(deus iuvo vos)以外的东西,那么它可能就在任何东西附近。


1
是的,的确,我混淆了SSH和SSL!我的OpenSSH守护程序实际上是在.pub服务器上使用文件,/etc/ssh/ssh_host_rsa_key.pub而不是在使用任何SSL证书颁发机构体系结构。当我运行ssh-keygen -l该文件时,它给了我服务器的RSA2密钥指纹。
Jez 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.