Ir para o conteúdo
AZ Tools

Inspetor de chaves públicas SSH

Pega nas linhas que você já tem em authorized_keys ou known_hosts e mostra o que há de fato dentro delas. De cada chave informa o algoritmo, o tamanho real lido do próprio material criptográfico em vez de deduzido do nome da linha, a impressão digital SHA256 no formato que o OpenSSH atual imprime, a impressão MD5 separada por dois-pontos que servidores antigos e alguns consoles de nuvem ainda exibem, e o comentário e as opções que estiverem anexados. Isso costuma bastar para responder à pergunta que fez você abrir o arquivo: qual destas seis chaves é o notebook que você perdeu, e se esta chave de host confere com a impressão que a documentação publicou. Ele também apanha coisas invisíveis quando se passa os olhos por uma linha de chave. O nome do algoritmo é escrito duas vezes — como primeira palavra da linha e dentro do bloco base64 — e só o segundo é o que um servidor compara, de modo que uma chave reetiquetada por um copiar e colar parece perfeitamente normal e nunca autentica. O mesmo vale para um nome de curva ECDSA que não bate com o algoritmo sob o qual está arquivada, para um bloco truncado que mesmo assim decodifica, para uma chave RSA abaixo do piso de 2048 bits e para o ssh-dss, que o OpenSSH desativou por padrão na versão 7.0 e removeu por completo na 9.8. Se você colar uma chave privada por engano, ele se recusa a tocá-la e avisa. Tudo roda no navegador: nenhuma chave é enviada.

Como usar

  1. Cole uma ou mais linhas de chave pública: um arquivo authorized_keys ou known_hosts inteiro funciona, e linhas de comentário começadas por # são ignoradas.
  2. Compare a impressão SHA256 com a impressão de chave de host publicada, ou a MD5 se o sistema que você está conferindo ainda imprime esse formato.
  3. Use o tamanho e o algoritmo para achar as entradas que vale a pena rotacionar: qualquer ssh-dss e qualquer chave RSA abaixo de 2048 bits.
  4. Veja o comentário e as opções para descobrir a que máquina cada chave pertence antes de apagar uma linha.
  5. Tudo marcado em âmbar é uma chave que não vai se comportar como a linha sugere: leia o aviso antes de confiar na entrada.

Perguntas frequentes

Por que minha impressão digital não bate com a que o ssh-keygen imprimiu?
O mais provável é que você esteja comparando formatos de hash diferentes. Desde o OpenSSH 6.8 o padrão é SHA256 exibido como base64 sem preenchimento, no estilo SHA256:uNiVzt…; antes disso era MD5 em hexadecimal separado por dois-pontos. São impressões dos mesmíssimos bytes, então nenhuma é mais correta, mas não se parecem em nada. Esta ferramenta imprime as duas para você comparar com a que o outro lado estiver mostrando. Se as duas divergirem, as chaves são realmente diferentes: a impressão cobre apenas o bloco base64, de modo que mudar o comentário ou as opções não pode afetá-la.
Qual a diferença entre o algoritmo da linha e o que está dentro da chave?
Uma linha de chave pública do OpenSSH escreve o nome do algoritmo duas vezes: como primeira palavra e como primeiro campo com prefixo de comprimento dentro do bloco base64. Só a cópia interna faz parte da chave; a primeira palavra é um rótulo, e nada no fluxo de trabalho habitual confere se as duas batem. Assim, uma linha editada à mão, ou montada a partir de duas chaves por um copiar e colar ruim, pode dizer ssh-rsa carregando dentro uma chave Ed25519. No arquivo parece de todo comum, e simplesmente nunca autentica. Esta ferramenta compara as duas e avisa quando divergem.
É seguro colar uma chave aqui?
Uma chave pública, sim: ela é pública por definição, e esta página não a envia a lugar nenhum. Toda a análise e as duas impressões são calculadas no seu navegador, e você pode confirmar carregando a página e depois desconectando da rede; ela continua funcionando. Uma chave privada é outra história: nunca cole uma em página web alguma, nem nesta. Se a entrada começar com um cabeçalho PRIVATE KEY, a ferramenta se recusa a processá-la e avisa, em vez de analisá-la em silêncio.
De que tamanho deve ser uma chave SSH?
Para chaves novas, a recomendação usual é Ed25519: fixa em 256 bits, pequena, rápida e sem parâmetros que se possa errar. Se você precisa de RSA por causa de um servidor antigo, 2048 bits é o piso atual e 4096 a escolha comum; abaixo de 2048 tanto o OpenSSH quanto a maioria das autoridades certificadoras já recusam a chave. Atenção: tamanhos de RSA não são comparáveis a tamanhos de Ed25519. Uma chave Ed25519 de 256 bits equivale mais ou menos a uma RSA de 3072, porque os números medem coisas diferentes. ECDSA sobre nistp256 serve onde não houver Ed25519.
Por que o ssh-dss é sinalizado se minha chave funciona?
Porque ela funciona apenas onde algo antigo ainda a aceita. As chaves DSA no OpenSSH são fixas em 1024 bits, abaixo de qualquer recomendação atual, e a implementação é especialmente sensível a aleatoriedade ruim: um nonce repetido vaza a chave privada por inteiro. O OpenSSH desativou o ssh-dss por padrão na versão 7.0, e a 9.8 removeu o código todo, então qualquer servidor que você atualizar deixará de aceitar a chave sem aviso. Se ainda houver uma chave desse tipo num authorized_keys, vale substituí-la antes da atualização, não depois.
Ele lê linhas de known_hosts e certificados?
Linhas de known_hosts são tratadas: os padrões de host iniciais são separados da chave em vez de confundidos com ela, e isso inclui as entradas com hash que começam por |1| e marcadores como @cert-authority e @revoked. As cadeias de opções do authorized_keys — command="…", no-pty, from="…" — são separadas do mesmo jeito. Certificados do OpenSSH (os tipos *-cert-v01@openssh.com) são reconhecidos e têm a impressão calculada, mas o corpo não é decodificado, então você não verá aqui os principais nem a janela de validade.

Ferramentas relacionadas