O problema é que ssh
pressupõe um mapeamento 1-para-1 entre endereços IP e hosts. Precisamos quebrar esse mapeamento somente para os endereços IP de seus servidores em nuvem.
A solução
Adicione a seguinte estrofe ao seu arquivo ~/.ssh/config
.
# Disable HostKey checking for servers which frequently change keys
Host 172.16.24.32 172.16.24.33 172.16.24.34
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Basta alterar os endereços IP e pronto.¹
Opcional: uma alternativa para intervalos de endereços IP
Se quiser aplicar isso a um netblock, como 192.168 / 16, você pode usar curingas assim:
# Do not keep HostKeys for internal networks.
Host 10.?.?.? 192.168.?.?
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Opcional: usando nomes de host
A pergunta original mencionou endereços IP, mas você pode, claro, usar nomes de host. Por exemplo, isso corresponderia a ssh instance32.vm.yoyodyne.com
:
Host *.vm.yoyodyne.com
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Se você quiser usar nomes de host e endereços IP, será necessário especificar explicitamente como o SSH não corresponde ao endereço IP resolvido . Por exemplo, se você tiver ssh ourvm.local
como atalho para ssh 192.168.1.53
:
Host 192.168.1.53 ourvm.local
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Advertência
Seja cauteloso ao contornar o modelo de segurança de ssh
. Em particular, verifique novamente se seus curingas não correspondem a nenhum servidor genuíno cujas HostKeys não estejam mudando.
¹ Por que / dev / null? Estou lançando os dados KnownHosts no depósito de bits porque somente a configuração StrictHostChecking no
remove o aviso, mas ainda se recusa a se conectar. Isso é bobagem, então presumo que o OpenSSH acabará alterando o comportamento ou adicionando uma nova opção. Se e quando uma solução melhor aparecer, atualizarei essa resposta.