Ignorar temporariamente meu arquivo `~/.ssh/known_hosts`?

Ignorar temporariamente meu arquivo `~/.ssh/known_hosts`?

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

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$ 

OBSERVAÇÃO:

.. por algumas respostas/comentários, percebo que minha pergunta é um pouco enganosa, tão curta que écomportamento esperado), então é normal (no meu caso)há uma razão válida por trás disso, por que eu quero ver "ignorar")

Responder1

Você pode usar ssh -o StrictHostKeyChecking=nopara desligar a verificação known_hostsmomentaneamente. Mas eu desaconselho isso. Você realmente deve verificar por que a chave do host foi alterada.

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

Host <your problematic host>
  StrictHostKeyChecking no

Responder2

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

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

Definir a StrictHostKeyChecking=noopção permitirá que você se conecte, mas SSHainda mostrará um aviso:

ssh -o StrictHostKeyChecking=no user@host

Como outros observaram, provavelmente é melhor abordar o problema subjacente. Você poderia considerarAutenticação de certificado SSHpara verificar hosts, por exemplo.

Responder3

Se você reinstalou o servidor e, portanto, a identificação foi alterada, basta excluir a linha 155 especificada /Users/alexus/.ssh/known_hostse seguir em frente.

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

10.52.11.171 server1
10.52.11.171 server2

e use ssh server1quando conectado à sub-rede 1 e ssh server2quando conectado à sub-rede2. Dessa forma, ambos os servidores podem ter chaves de host diferentes.

Responder4

-o StrictHostKeyChecking=nosó funciona se o host ainda não estiver presente no arquivoknown_hosts.

Eu acho que é mais limpo (sem avisos), se você espera que a chave dos hosts mude, talvez devido à clonagem da VM, para forçar a ignorância desses 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"

informação relacionada