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.