
¿Hay alguna manera de ignorar temporalmente mi ~/.ssh/known_hosts
archivo?
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=no
para desactivar la comprobación known_hosts
momentá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/config
para 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 GlobalKnownHostsFile
y UserKnownHostsFile
en /dev/null
:
ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host
Configurar la StrictHostKeyChecking=no
opció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_hosts
y 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 server1
cuando esté conectado a la subred 1 y ssh server2
cuando esté conectado a la subred2. De esta manera, ambos servidores pueden tener claves de host diferentes.
Respuesta4
-o StrictHostKeyChecking=no
solo 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"