Esta semana enfrentei um problema interessante. Configurei uma rede aqui em casa com a mesma faixa de IPs so trabalho. Quando fui fazer ssh no roteador, me lembrei de um probleminha. O ssh identificou que o servidor tinha uma chave incorreta, porque eu ja tinha utilzado o ssh no mesmo IP, mas em apontando pra outro serivor. O ssh achou que poderia ser um tipo de ataque do tipo man-in-the-midle.
Eu poderia simplesmente apagar or ~/.ssh/know_hosts ou remover a chave do servidor, mas teria que fazer isso toda vez que alternasse entre as redes.
$ ssh root@192.168.0.1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3f:1a:f4:ba:c5:aa:c1:1g:bf:4e:2e:cf:a3:fa:d8:59.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/peter/.ssh/known_hosts:3
RSA host key for 192.168.0.1 has changed and you have requested strict checking.
Host key verification failed.$
A solução foi desabilitar a verificação para IPs locais. Como são LANs que eu gerencio, o risco de have um ataque é mínimo.
Não recomendo para servidores com IPs públicos. Para isso, basta editar ou criar o arquivo
~/.ssh/config.
Host 192.168.*.* StrictHostKeyChecking no UserKnownHostsFile=/dev/null