Eu tenho um processo automatizado que faz SSH regularmente para cerca de 120 máquinas diferentes por meio de uma VPN. Ocasionalmente, essas máquinas trocam de endereço IP e usam endereços que foram usados anteriormente por máquinas diferentes. Isso causa problemas com a verificação da chave do host ao efetuar login via SSH.
Para contornar isso, o processo é executado ssh-keygen -R
para remover a chave do host deknown_hosts antes de acessar cada máquina via SSH.
Infelizmente, cada vez que este comando é executado, ele parece criar um arquivo de backup de conhecidos_hosts denominadosknown_hosts.ABCDEFGH onde " ABCDEFGH" é uma sequência aleatória de letras.
Recentemente descobri aproximadamente 750.000 desses arquivos de backup, ocupando 34 GB de espaço no disco rígido, no servidor que executa o processo automatizado.
Além de removerknown_hosts.* cada vez que executo ssh-keygen
, existe uma maneira de evitar esse acúmulo de arquivos? Ou seja, existe uma maneira de evitar ssh-keygen
o backup do arquivoknown_hosts quando ele o modifica?
Percebi esse comportamento no Ubuntu 22.04 e no MacOS 13.6.6.
Conforme apontado em um comentário , na verdade eram arquivos temporários que, por algum motivo,
ssh-keygen
não foram excluídos (apesar da operação em si ter sido bem-sucedida).Acontece que meu processo automatizado estava sendo executado
ssh-keygen
simultaneamente em vários threads ao mesmo tempo (às vezes de 50 a 100 instâncias iniciando simultaneamente). Acho que isso estavassh-keygen
sufocando um pouco ao manipular o arquivoknown_hosts .Sincronizar os threads e serializar todas as
ssh-keygen
execuções resolveu totalmente o problema.Ele destaca o risco de execução
ssh-keygen
simultânea de vários threads/processos, e me pergunto se é um bug nossh-keygen
, mas por enquanto minha correção parece estar funcionando. De qualquer forma, registrei umssh-keygen
relatório de bug aqui, apenas para garantir.Uma "correção" alternativa é não usar um arquivoknown_hosts definindo a
UserKnownHostsFile
opção como/dev/null
, o que contorna totalmente o problema.