Muitas das respostas aqui vão funcionar - mas tecnicamente são soluções alternativas. O OpenSSH já tem um recurso integrado com isso em mente: HostKeyAlias
.
Em seu arquivo .ssh / config, adicione HostKeyAlias <alias>
a uma configuração de host:
host myserver.example.com
HostKeyAlias myserver.example.com
Com isso, conectar-se ao servidor myserver.example.com
não usará o nome do host ou o endereço IP - ele sempre usará >> somente o HostKeyAlias fornecido ao se conectar a ele servidor. Para mim, faz sentido usar o nome do host - mas você pode usar qualquer alias que você goste.
As configurações típicas para mim mesmo para hosts dinâmicos são assim:
host myserver
hostname myserver.dyn.example.com
HostKeyAlias myserver.private.example.com
Isso também pode ser usado em alguns cenários obscuros, nos quais você sabe que vários servidores possuem as mesmas chaves de host (geralmente, isso não deve ser ). Isso evitaria entradas duplicadas. No futuro, se as chaves forem alteradas legitimamente, você não precisará substituir / excluir várias entradas. Apenas um. Os servidores Gitlab Geo são um bom exemplo disso.
Sobre a limpeza do arquivo known_hosts, sugiro que você consulte outras perguntas / respostas especificamente relacionadas à manutenção / remoção de entradas conhecidas do known_hosts. Por exemplo, consulte Como gerenciar meu arquivo .ssh / known_hosts ; Eu estou especialmente impressionado com a resposta do user1953828, embora eu veja que ele não tem muitos votos positivos (ainda). :)