A impressão digital da chave do host no login do SSH difere daquela no momento da geração da chave

3

Por favor, desculpe a longa história, não tenho certeza de quanto dela é relevante.

Os computadores "S" e "C" estão em uma LAN - eles têm endereços ipv4 não roteáveis no mesmo segmento e são protegidos por firewall contra tentativas de conexão de entrada.

'S' recebe o servidor LTS do Ubuntu 16.04.x instalado, headless e openssh-server e IP estático. Todo o resto em 'S' ainda tem configurações padrão.

Em 'C' com o cliente OpenSSH:

$ ssh [email protected]

Aceito a chave do host oferecida e tudo funciona conforme o esperado. Enquanto no shell para S eu corro apt-get update e ugprade.

Agora eu configuro o cliente em C com configurações lenientes, para usar a autenticação de chave ou senha. E eu gero chaves em C, ed25519 e RSA.

Em seguida, faça login em S novamente, a mensagem de boas-vindas informa que é necessário reiniciar. Adiar que eu mova todas as chaves do servidor padrão para um diretório de backup e gere novas (para ter controle das configurações do keygen e verifique se apenas as strongs estão presentes). Isso funciona como esperado e mostra um pictograma ASCII para cada chave.

Agora reinicie o S, matando a sessão do C. Em seguida, faça o login no S novamente, agora é claro que suas chaves de host foram alteradas e, graças à minha configuração cautelosa, há uma mensagem assustadora e preciso excluir a chave de host antiga de ~ / .ssh / known_hosts. Então eu faço isso e começo a me logar novamente.

A arte ASCII e a impressão digital são diferentes, conforme esperado. No entanto, eles não concordam com os que foram exibidos quando eu estava gerando as chaves.

Eu vou em frente e faço o login porque confio na situação (firewall etc.). Agora em S, a saída de

$ ssh-keygen -lv -f ssh_host_ed25519_key.pub

ainda é o mesmo de quando eu gerava as chaves:

256 SHA256:<longStringTheFirstHere> root@S (ED25519)
+--[ED25519 256]--+
<ASCII art follows>

No entanto, ao mesmo tempo, posso fazer login novamente em outro shell e a chave do host apresentada é:

256 SHA256:<longStringTheSecondHere> root@S (ED25519)
+--[ED25519 256]--+
<different ASCII art>

Então, estou tentando entender por que existe essa diferença. Alguma coisa deu errado? Existe algum problema de segurança? É mais provável que algo esteja faltando, mas gostaria de saber o que é isso.

Encontrei muitas páginas sobre tópicos relacionados, mas não exatamente esse problema.

    
por stephen_789 25.12.2016 / 18:42

1 resposta

4

Resolvi minha própria pergunta. A pista estava no fundo da arte ASCII. Na saída deste comando:

$ ssh-keygen -lv -f ssh_host_ed25519_key.pub

na parte inferior é:

+----[SHA256]-----+

Na parte inferior da arte ASCII, quando o servidor apresenta sua chave no login:

+-----------------+

man ssh-keygen revela o -E param que permite especificar um algoritmo hash. Com SHA256 produziu o mesmo que sem ele, mas com md5 produziu a saída vista no login:

$ ssh-keygen -lv -E md5 -f ssh_host_ed25519_key.pub

Então, agora estou convencido de que nada está errado, as impressões digitais diferem apenas por causa do algoritmo de hash e, afinal de contas, era a mesma chave.

    
por stephen_789 26.12.2016 / 01:46