Mensagem de erro
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
Também aparece como
- IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
- Offending ED25519 key in /root/.ssh/known_hosts:1
O aviso aparece como um bloco entre linhas de caracteres `@`, seguido da impressão digital da nova chave, da linha conflitante do known_hosts e de “Host key verification failed.”.
OpenSSH client — host key differs from the one recorded in known_hosts
O que significa
O servidor apresentou uma chave de host diferente da registrada para este nome de host ou endereço no `known_hosts`. O ssh não consegue distinguir uma mudança legítima (reinstalação, nova máquina atrás do mesmo IP) de alguém interceptando a conexão, então se recusa a continuar no modo batch e, fora dele, desativa a autenticação por senha e a keyboard-interactive. A linha “Offending … key in …:N” indica qual linha do known_hosts contém a chave antiga.
Por que acontece
O servidor foi recriado
comumUma reinstalação, uma nova implantação a partir de uma imagem ou um contêiner que gera chaves de host ao iniciar cria novas chaves de host com o mesmo nome.
O endereço agora pertence a outra máquina
comumEndereços IP de nuvem e concessões de DHCP são reaproveitados. Uma entrada registrada pelo IP continua com a chave da máquina antiga.
Vários hosts com chaves diferentes atrás de um mesmo nome
ocasionalDNS round-robin ou um balanceador de carga TCP na frente de servidores que não compartilham as chaves de host fazem o aviso aparecer aleatoriamente.
Há alguém no meio da conexão
raraÉ raro, mas é exatamente para isso que a verificação existe: uma rede comprometida, um Wi-Fi malicioso ou um sequestro de DNS respondendo com a própria chave. Verifique antes de aceitar.
Como corrigir
- 1.
Verificar a nova chave e só então substituir a entrada
Compare a nova impressão digital com a de uma fonte confiável; só então remova a linha antiga com `ssh-keygen -R` (pelo nome e pelo IP).
bash # 1. Get the new fingerprint from a trusted channel (cloud console, provisioning logs, the admin) ssh-keyscan -t ed25519 server.example.com 2>/dev/null | ssh-keygen -lf - # 2. Only if it matches: remove the old entry and connect again ssh-keygen -R server.example.com ssh-keygen -R 203.0.113.10 - 2.
Usar certificados de host SSH em frotas de servidores
Clientes que confiam em uma CA de hosts aceitam servidores recriados cujas novas chaves foram assinadas por essa CA, sem fixação por host.
text # known_hosts: trust host keys signed by your SSH CA instead of pinning each key @cert-authority *.internal.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... ssh-host-ca