Eu corro um desktop Ubuntu com vários servidores virtuais no Virtual Box para testar coisas, etc. No passado, também tenho me conectado a outros tipos de caixas Linux VPS remotas. Atualmente, meu .ssh/known_hosts
arquivo tem um monte de chaves, a maioria das quais não está mais sendo usada.
Quero limpar meu .ssh/known_hosts
arquivo, mas como sei qual chave pertence a qual host? Ou seja, como posso saber quais chaves posso remover com segurança e quais devo deixar em paz?
Para descobrir qual entrada é para um nome de host conhecido em known_hosts:
Para excluir uma única entrada de known_hosts:
Com dificuldade...
O Ubuntu, por padrão, faz um hashe dos nomes de host do arquivo known_hosts (este não é o comportamento padrão do openssh), para dificultar que qualquer pessoa que leia o arquivo saiba quais sistemas você acessa.
Se você realmente quiser limpar o arquivo, a opção mais simples provavelmente é excluí-lo e verificar as chaves dos servidores que você conhece à medida que surgem, mas na verdade eu deixaria known_hosts em paz.
Você pode impedir que novas entradas de hosts sejam criptografadas comentando a opção em /etc/ssh/ssh_config
Se você tem uma lista de todos os seus hosts, você pode fazer algo como
Isso substituirá seu arquivo .ssh/known_hosts por um recém-gerado com base na verificação dos hosts.
E também faça o que o outro receber sugere; HashKnownHosts é mais aborrecimento do que ajuda aqui.
Eu tinha mais de 300 entradas antigas obsoletas no meu arquivo known_hosts . Não tenho certeza se funcionará para todos os sistemas (ou mesmo para a maioria dos sistemas), mas aqui está meu script de perguntas e desenvolvimento. Talvez seja necessário ajustar as strings ou o local correspondentes.