Ignorar temporariamente o meu arquivo '~ / .ssh / known_hosts'?

38

Existe uma maneira de ignorar temporariamente meu arquivo ~/.ssh/known_hosts ?

mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$ 

NOTA:

.. por algumas respostas (s) / comentário (s) eu percebo que a minha pergunta é um pouco enganosa, tão curto é o comportamento esperado), por isso é normal (no meu caso) existe uma razão válida por trás disso sobre porque eu quero ver "ignorá-lo")

    
por alexus 07.12.2013 / 21:06

6 respostas

51

Você pode usar ssh -o StrictHostKeyChecking=no para desativar a verificação known_hosts momentaneamente. Mas eu aconselharia contra isso. Você deve realmente verificar por que a chave do host mudou.

Outra opção é adicionar uma entrada específica ao seu ~/.ssh/config para o host em questão. Essa abordagem pode ser válida se você tiver um determinado host que gere novas chaves de host sempre que for reinicializado e for reinicializado por um motivo válido várias vezes ao dia.

Host <your problematic host>
  StrictHostKeyChecking no
    
por 07.12.2013 / 21:08
25

Para ignorar completamente o arquivo de hosts conhecidos em um ambiente POSIX, defina as opções GlobalKnownHostsFile e UserKnownHostsFile como /dev/null :

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

Definir a opção StrictHostKeyChecking=no permitirá que você se conecte, mas o SSH ainda mostrará um aviso :

ssh -o StrictHostKeyChecking=no user@host

Como outros já notaram, provavelmente é melhor abordar o problema subjacente. Você pode considerar autenticação de certificado SSH para verificar hosts, por exemplo.

    
por 14.04.2014 / 22:07
4

Se você reinstalou o servidor e, portanto, a Identificação foi alterada, basta excluir a linha especificada 155 de /Users/alexus/.ssh/known_hosts e prosseguir.

Se você alternar entre redes privadas diferentes, deverá usar nomes de host para se conectar, pois o cliente ssh também salvará as chaves, dependendo do nome do host. Adicione algo assim ao seu /etc/hosts :

10.52.11.171 server1
10.52.11.171 server2

e, em seguida, use ssh server1 quando conectado à sub-rede 1 e ssh server2 quando conectado à sub-rede2. Dessa forma, os dois servidores podem ter diferentes teclas host.

    
por 07.12.2013 / 23:33
1

-o StrictHostKeyChecking=no só funciona se o host ainda não estiver presente no arquivo known_hosts.

Eu acho que é mais limpo (sem avisos), se você espera que a chave dos hosts mude, talvez devido à clonagem de vm, para forçar a ignorar esses tipos de hosts como este:

# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
    ssh-keygen -R ${host_ip}
    echo ${host_key} >>  ~/.ssh/known_hosts
}

# connect as normal way
ssh root@${host_ip} "hostname"
    
por 23.10.2015 / 17:57
1

Algumas pessoas dizem que não está certo, você não deve fazer isso e assim por diante, mas eu preciso disso também para testar um par de dispositivos incorporados uma e outra vez. Você precisa desabilitar StrictHostKeyChecking=no , está certo, mas também redefinir o arquivo de hosts conhecidos como /dev/null . Aqui está um exemplo com autologin e ps no dispositivo remoto.

sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'ps ax'
    
por 28.06.2018 / 09:27
-2

Faça login em todos os seus servidores (e se RedHat) rm -f /etc/ssh/ssh_host_* e, em seguida, reinicie o SSHD.

Isso criará novas chaves de host SSH que não precisam ser ignoradas.

Eu posso pensar em apenas uma instância em que as chaves SSH clonadas em vários servidores não são apenas desejadas, mas também não emitem nenhum aviso. Múltiplos de um registro. Todos os hosts com o registro A têm a mesma chave.

    
por 14.04.2014 / 23:15