如何快速识别SSH私钥文件格式?

Ret*_*ner 7 ssh ssh-keys private-key pkcs

今天由远程桌面管理器触发其 SSH 密钥生成器提供以OpenSSH格式保存私钥,但随后继续以PKCS#1 / OpenSSL格式存储它,同时*.pri对两种提供的格式使用相同的随机文件扩展名。

另存为

我只是想连接到 AWS EC2 实例,但 WinSCP、FileZilla 和 PuTTY 都使用不同的私钥格式。

随意提供更多见解,这只是我目前不完整的理解。

Ret*_*ner 10

文件扩展名通常是随机的或不足以识别格式。

广泛的分类:

  • 带有ASN.1数据的PEM文件,使用DER编码
  • 数据以其他格式编码的 PEM 文件
  • 非 PEM 格式

PEM 文件在“标签”和“标签”之间包装Base64。它们也常用于包含私钥和 SSL 证书(-chain)。使用在线 ASN.1 解码器检查 PEM 文件的 Base64 内容。-----BEGIN----------END-----

PEM 文件

PKCS#1 / OpenSSL : id_rsa, *.pem, *.der, *.key, ...

-----BEGIN RSA PRIVATE KEY-----

PuTTY Key Generator 将此称为“OpenSSH SSH-2 私钥(旧 PEM 格式)”(?)。根据这个答案,“SSLeay”或“传统”格式。Base64 以MII.... ASN.1 内容更多信息

PKCS#8 : *.pem, *.der, *.key, ...

-----BEGIN PRIVATE KEY----- 或者 -----BEGIN ENCRYPTED PRIVATE KEY-----

未加密变体的 Base64 以MII...IBADAN. ASN.1 内容,基本上是 PKCS#1 加上版本信息。更多信息

OpenSSH : *.??? (不知道典型的文件扩展名是什么)

-----BEGIN OPENSSH PRIVATE KEY-----

PEM 在外面,但非 ASN.1 内容。显然是一种有点无证的格式

非 PEM 文件

PuTTY 私钥:*.ppk

内容还包含人类可读的单词,将其标识为腻子私钥。

PKCS#12 / PFX : *.p12, *.pfx

PFX 是一种 Microsoft 格式,后来以清理形式发布为 PKCS#12。内容是二进制的,不仅可以包含私钥,还可以包含 SSL 证书(-chain)。