Como obter o fingerprint de uma chave SSH
- Cole uma ou mais linhas de chave pública em Chaves SSH, ou arraste um arquivo
.pub,authorized_keysouknown_hosts. - Cada chave ganha um cartão com tipo, tamanho ou curva, comentário, fingerprints SHA256 e MD5 e a linha exata do
ssh-keygen -l. - Escolha o que o painel Saída mostra: fingerprints SHA256, fingerprints MD5, uma chave pública PEM (SPKI ou PKCS#1), RFC 4716 ou linhas OpenSSH normalizadas.
- Use Copiar saída ou Baixar para o resultado. Copiar fingerprint em um cartão copia só aquele valor.
A entrada aceita vai além de linhas .pub simples: opções de authorized_keys como from="10.0.0.0/8",command="…", linhas de known_hosts com nomes de host ou entradas com hash |1|…, blocos RFC 4716 ---- BEGIN SSH2 PUBLIC KEY ----, certificados OpenSSH, chaves públicas PEM e arquivos -----BEGIN OPENSSH PRIVATE KEY-----.
Como o fingerprint é calculado
Uma linha de chave pública OpenSSH tem três partes: o tipo, o blob da chave em Base64 e um comentário.
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG4ZlfvPsoxxd6tpkc1MDAJvZf8exJSDeW7a3xQRKA7d alice@laptop
O fingerprint é um hash do blob decodificado, que tem 51 bytes no Ed25519:
| Formato | Valor para a chave acima |
|---|---|
| SHA256 (padrão do OpenSSH 6.8+) | SHA256:XSOBs9uz/dFf9ci88yKGbLMcjtzblRna8F0VOmxZiv8 |
| MD5 (legado) | MD5:93:07:89:27:05:e1:7a:5d:92:6e:ab:13:1e:48:90:d5 |
Fingerprints SHA256 são escritos em Base64 sem o = final, por isso sempre têm 43 caracteres depois do prefixo. O mesmo cálculo em Python:
import base64, hashlib, sys
line = open(sys.argv[1]).read().split()
blob = base64.b64decode(line[1])
digest = hashlib.sha256(blob).digest()
print("SHA256:" + base64.b64encode(digest).decode().rstrip("="))
Veja preenchimento explicado para entender por que o = pode ser descartado, e Base64 em Python para mais.
Conferindo uma chave de host antes de confiar nela
Na primeira conexão, o OpenSSH pergunta: ED25519 key fingerprint is SHA256:…. Are you sure you want to continue connecting? A resposta certa depende de comparar esse valor com um obtido por outro caminho:
- no console do servidor:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub - nos fingerprints de chaves de host publicados pelo seu provedor
- com um colega que já tem o host no
known_hosts: cole esse arquivo aqui e cada entrada aparece com o seu fingerprint
Para ver o que um servidor oferece sem fazer login, ssh-keyscan host.example.com | ssh-keygen -lf - imprime todos os fingerprints das chaves de host.
Reconhecendo o tipo de chave pelo Base64
O blob começa com o tipo de chave como uma string prefixada pelo comprimento, então cada tipo tem um início fixo em Base64:
| Começa com | Tipo de chave |
|---|---|
AAAAC3NzaC1lZDI1NTE5 | ssh-ed25519 |
AAAAB3NzaC1yc2E | ssh-rsa |
AAAAE2VjZHNhLXNoYTItbmlzdHAyNT | ecdsa-sha2-nistp256 |
AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29t | sk-ssh-ed25519@openssh.com (chave de segurança FIDO) |
AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAx | Certificado Ed25519 |
Se a palavra do tipo na linha e o blob não baterem, o cartão avisa sobre a divergência. Isso costuma significar que a linha foi editada à mão.
Avisos e limites
- RSA abaixo de 2048 bits é marcada como fraca, e chaves DSA são marcadas porque o OpenSSH moderno as desativa.
- Certificados (
*-cert-v01@openssh.com) mostram ID da chave, número de série, tipo usuário ou host, principals, validade, opções críticas, extensões e o fingerprint da chave da CA que assinou. - Chaves FIDO (
sk-…) e Ed448 são decodificadas, mas não têm conversão para PEM. - O comentário guardado dentro de um arquivo de chave privada não é exibido.
- O SHA256 usa a API WebCrypto do navegador, que exige uma página https. O MD5 é calculado pela própria página.
Perguntas frequentes
Como descobrir o fingerprint da minha chave SSH?
Cole o conteúdo do seu arquivo .pub acima, ou rode ssh-keygen -lf ~/.ssh/id_ed25519.pub. Os dois imprimem uma linha como 256 SHA256:XSOBs9uz… alice@laptop (ED25519).
Por que meu fingerprint parece diferente em outro servidor ou serviço?
Normalmente é o hash: ferramentas mais antigas e alguns painéis web mostram MD5 em hex separado por dois-pontos (MD5:93:07:89:…), enquanto o OpenSSH moderno mostra SHA256 em Base64. Mude Saída para fingerprints MD5 para comparar com a forma antiga.
É seguro colar meu arquivo de chave privada aqui?
A ferramenta lê só a seção pública de um arquivo OPENSSH PRIVATE KEY, que fica sem criptografia mesmo em chaves protegidas por senha, e não toca na parte privada. Ainda assim, colar o arquivo .pub é o hábito melhor.
Do que exatamente o fingerprint SHA256 é o hash?
Do blob binário da chave, ou seja, a parte Base64 da linha .pub depois de decodificada. O comentário e o texto do tipo de chave na frente não entram, então renomear uma chave não muda o seu fingerprint.