Eu tenho um arquivo PEM que adiciono a um ssh-agent em execução:
$ file query.pem
query.pem: PEM RSA private key
$ ssh-add ./query.pem
Identity added: ./query.pem (./query.pem)
$ ssh-add -l | grep query
2048 ef:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ./query.pem (RSA)
Como posso obter a impressão digital da chave (que vejo no ssh-agent) diretamente do arquivo? Eu sei que ssh-keygen -l -f some_keyfunciona para chaves ssh "normais", mas não para arquivos PEM.
Se eu tentar ssh-keygen no arquivo .pem, obtenho:
$ ssh-keygen -l -f ./query.pem
key_read: uudecode PRIVATE KEY----- failed
key_read: uudecode PRIVATE KEY----- failed
./query.pem is not a public key file.
Essa chave começa com:
-----BEGIN RSA PRIVATE KEY-----
MIIEp.... etc.
ao contrário de uma chave privada "regular", que se parece com:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E15F2.... etc.
ssh-keygen -lnão era possível ler um arquivo de chave privada, embora outras operações ssh-keygen(e ssh*) o façam. Mas quando ssh-keygen gera uma chave, ele grava o arquivo de chave privada, por exemplo, id_rsa e um arquivo de chave pública correspondente, com o .pubacréscimo de id_rsa.pub. Mais velho ssh-keygen -l vai tentar adicionar .pubao nome do arquivo que você especificar e ler esse arquivo publickey.
.ssh/id_rsaarquivo gerado pelo OpenSSH usando todos os padrões É um arquivo PEM. As chaves privadas são codificadas por PEM por padrão. De fato, você pode usar chaves RSA geradas com o OpenSSL diretamente com o OpenSSH.