¿Ignorar temporalmente mi archivo `~/.ssh/known_hosts`?

¿Ignorar temporalmente mi archivo `~/.ssh/known_hosts`?

¿Hay alguna manera de ignorar temporalmente mi ~/.ssh/known_hostsarchivo?

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:

.. con algunas respuestas/comentarios me doy cuenta de que mi pregunta es un poco engañosa, por muy breve que seacomportamiento esperado), por lo que es normal (en mi caso)hay una razón válida detrás de esto por la que quiero ver "ignorarlo")

Respuesta1

Puede utilizar ssh -o StrictHostKeyChecking=nopara desactivar la comprobación known_hostsmomentáneamente. Pero desaconsejaría esto. Realmente deberías comprobar por qué ha cambiado la clave del host.

Otra opción es agregar una entrada específica ~/.ssh/configpara el host en cuestión. Este podría ser un enfoque válido si tiene un determinado host que genera nuevas claves de host cada vez que se reinicia y se reinicia por un motivo válido varias veces al día.

Host <your problematic host>
  StrictHostKeyChecking no

Respuesta2

Para ignorar completamente su archivo de hosts conocido en un entorno POSIX, configure las opciones GlobalKnownHostsFiley UserKnownHostsFileen /dev/null:

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

Configurar la StrictHostKeyChecking=noopción le permitirá conectarse pero SSHseguirá mostrando una advertencia:

ssh -o StrictHostKeyChecking=no user@host

Como han señalado otros, probablemente sea mejor abordar el problema subyacente. Podrías considerarAutenticación de certificado SSHpara verificar hosts, por ejemplo.

Respuesta3

Si ha reinstalado el servidor y, por lo tanto, la identificación ha cambiado, simplemente debe eliminar la línea 155 especificada /Users/alexus/.ssh/known_hostsy continuar.

Si cambia entre diferentes redes privadas, debe usar nombres de host para conectarse, ya que el cliente ssh también guardará claves según el nombre de host. Agrega algo como esto a tu /etc/hosts:

10.52.11.171 server1
10.52.11.171 server2

y luego usarlo ssh server1cuando esté conectado a la subred 1 y ssh server2cuando esté conectado a la subred2. De esta manera, ambos servidores pueden tener claves de host diferentes.

Respuesta4

-o StrictHostKeyChecking=nosolo funciona si el host aún no está presente en el archivo conocido_hosts.

Creo que es más limpio (sin advertencias), si espera que la clave de hosts cambie, tal vez debido a la clonación de vm, obligar a ignorar ese tipo 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"

información relacionada