Como o formato ssh-keygen .pub funciona com arquivos .pem?

17

O ssh-keygencomando gera .pubarquivos que ele descreve como "arquivos de chave pública", mas eles são um formato totalmente diferente da maioria dos "arquivos de chave pública" que eu geralmente vi, que estão no formato PEM. Os ssh-keygenarquivos -style ficam assim:

ssh-rsa AAAAB3NzaC1... user@host

... enquanto os arquivos PEM ficam assim:

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

Esses dois formatos são intercambiáveis ​​ou estão executando um propósito fundamentalmente diferente? Me deparei com esse problema porque queria obter a impressão digital da chave RSA2 do meu arquivo de chave pública codificada em PEM, mas o método geralmente sugerido para fazê-lo ( ssh-keygen -l) diz que meu arquivo codificado em PEM "não é um arquivo de chave pública".

A propósito, estou ciente dessa resposta , mas ela não cobre os arquivos .pub gerados por ssh-keygen.

Jez
fonte
11
Bem, uma chave pública SSH não é igual a um certificado no formato PEM. Você já olhou para isso? serverfault.com/questions/114301/…
cjc
2
É importante ser específico aqui, que você provavelmente está olhando para o OpenSSH e não para o SSH.COM menos comum ou outras implementações. A chave pública codificada por PEM padrão é realmente válida para algumas implementações menos comuns. Sei que uma caixa VMS à qual me conecto requer um arquivo PEM.
precisa
@cjc, Certo, não é um certificado, mas também não é o mesmo que você obtém executando openssl rsa -in privatekey_rsa -pubout, que na verdade é uma chave pública e não um certificado.
precisa

Respostas:

8

Os pares de chaves OpenSSH não são PEM ou qualquer outro padrão x500. Novas versões do OpenSSH podem usar chaves X.509 PEM, mas essa é outra bola de cera separada do ssh-keygen e deve ser configurada explicitamente. Pelo que sei, nenhuma implementação importante do SSH usa exatamente os mesmos formatos de chave que qualquer outro.

Como observa o Zoredache , se você estiver usando algo diferente do OpenSSH (deus iuvo vos), então poderá ser quase qualquer coisa.

Chris S
fonte
11
Sim, de fato, eu tinha confundido SSH e SSL! De fato, meu daemon OpenSSH usava um .pubarquivo no meu servidor /etc/ssh/ssh_host_rsa_key.pube não usava nenhuma arquitetura de autoridade de certificação SSL. Quando corri ssh-keygen -lnesse arquivo, ele me deu a impressão digital da chave RSA2 do servidor.
Jez