Acabei de tentar o SSH em um servidor que estou fazendo sem problemas por um tempo e recebi um aviso de que a chave do host do servidor foi alterada.
Mas isso não aconteceu!
No servidor, verifiquei a chave de hosts que está sendo referenciada em /etc/ssh/sshd_config e não foi alterada.
No cliente, verifiquei o arquivo known_hosts e a entrada existente continha a chave pública correta. Tentei mover temporariamente o arquivo known_hosts e definir StrictHostKeyChecking to no in /etc/ssh/ssh_config para que ele se conecte automaticamente para que eu possa comparar a chave pública. Quando fiz isso e verifiquei a nova entrada em known_hosts , a parte da chave pública é idêntica a antes!
Então, por que não se conectaria? A única coisa diferente em known_hosts é o sal e o hash do nome do host. Mas desde que eu sou, e sempre tenho, conectado via IP e porta, sem usar o hostname, estes devem certamente estar corretos.
Alguma idéia?
Observe que todos os clientes que tentam se conectar que se conectaram anteriormente estão recebendo esta mensagem. Então não é um problema com o cliente.
EDIT: devo acrescentar que quando me conectei com StrictHostKeyChecking definido como no e criei um novo arquivo known_hosts , quando tentei me conectar novamente usando o novo arquivo known_hosts e StrictHostKeyChecking de volta para yes , conectado sem aviso. Em outras palavras, o novo arquivo known_hosts funcionou sem aviso, enquanto o antigo não funcionou, apesar de ter a mesma chave pública dentro.