Use la opción StrictHostKeyChecking, por ejemplo:
ssh -oStrictHostKeyChecking=no $h uptime
Esta opción también se puede agregar a ~ / .ssh / config, por ejemplo:
Host somehost
Hostname 10.0.0.1
StrictHostKeyChecking no
Tenga en cuenta que cuando las claves del host hayan cambiado, recibirá una advertencia, incluso con esta opción:
$ ssh -oStrictHostKeyChecking=no somehost uptime
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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
31:6f:2a:d5:76:c3:1e:74:f7:73:2f:96:16:12:e0:d8.
Please contact your system administrator.
Add correct host key in /home/peter/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/peter/.ssh/known_hosts:24
remove with: ssh-keygen -f "/home/peter/.ssh/known_hosts" -R 10.0.0.1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
ash: uptime: not found
Si sus hosts no se reinstalan con frecuencia, puede hacer esto menos seguro (pero más conveniente para las claves de host que cambian a menudo) con la -oUserKnownHostsFile=/dev/null
opción. Esto descarta todas las claves de host recibidas para que nunca genere la advertencia.
Con 18.04, hay una nueva posibilidad: StrictHostKeyChecking=accept-new
. De man 5 ssh_config
:
If this flag is set to “accept-new” then ssh will automatically
add new host keys to the user known hosts files, but will not
permit connections to hosts with changed host keys. If this flag
is set to “no” or “off”, ssh will automatically add new host keys
to the user known hosts files and allow connections to hosts with
changed hostkeys to proceed, subject to some restrictions.
yes
genera "y", es posible que haya tenido mejor suerte confor h in $SERVER_LIST; do yes yes | ssh $h "uptime"; done
(tenga en cuenta el sí adicional, que le dice a sí qué decir en lugar de "y" ").