He escrito este pequeño script de utilidad:
for h in $SERVER_LIST; do ssh $h "uptime"; done
Cuando se agrega un nuevo servidor $SERVER_LIST
, el script se detiene con:
The authenticity of host 'blah.blah.blah (10.10.10.10)' can't be established.
RSA key fingerprint is a4:d9:a4:d9:a4:d9a4:d9:a4:d9a4:d9a4:d9a4:d9a4:d9a4:d9.
Are you sure you want to continue connecting (yes/no)?
He intentado yes
:
for h in $SERVER_LIST; do yes | ssh $h "uptime"; done
sin suerte
¿Hay alguna forma de parametrizar ssh
para aceptar automáticamente cualquier clave nueva?
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" ").Respuestas:
Use la opción StrictHostKeyChecking, por ejemplo:
Esta opción también se puede agregar a ~ / .ssh / config, por ejemplo:
Tenga en cuenta que cuando las claves del host hayan cambiado, recibirá una advertencia, incluso con esta opción:
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
. Deman 5 ssh_config
:fuente
ssh-keyscan
es preferible, si está disponible en su sistema.ssh-keyscan
enfoque es más sensato. Para máquinas virtuales locales y otros hosts en redes confiables con direcciones IP dinámicas / reutilizadas, el enfoque descrito es lo suficientemente bueno.ssh-keyscan
solución solo es propensa a un ataque de hombre en el medio la única vez quessh-keyscan
se ejecuta. La-oStrictHostKeyChecking=no
solución es propensa a un ataque de hombre en el medio cada vez quessh
se ejecuta.Puede usar el siguiente comando para agregar la huella digital de un servidor a sus conocidos_hosts
NOTA: Reemplace <dirección IP> y <nombre de host> con la IP y el nombre DNS del servidor que desea agregar.
El único problema con esto es que terminará con algunos servidores en su conocido_hosts dos veces. No es realmente un gran problema, solo mencionarlo. Para asegurarse de que no haya duplicados, primero puede eliminar todos los servidores ejecutando lo siguiente primero:
Para que puedas correr:
Una cosa a tener en cuenta al eliminar solo para volver a agregar, esencialmente está eliminando la seguridad de verificar la huella digital. Por lo tanto, definitivamente no querrá ejecutar este script antes de cada ejecución de su script de utilidad.
fuente
-H
numere los nombres de host y las direcciones.Llego un poco tarde con esta respuesta, pero la forma más sensata sería hacer un ssh-keyscan en la nueva máquina antes de ejecutar la reunión de tiempo de actividad.
Desactivar la comprobación de cordura por conveniencia parece un mal plan, incluso si crees que tienes el control total del medio ambiente.
fuente
StrictHostKeyChecking no
Para agregar una lista de servidores automáticamente, podemos hacer lo siguiente:
Agregar servidores IP en la lista de servidores de archivos
Las IP deben agregarse en el siguiente formato.
Salida de
cat servers-list
Cambie las IP anteriores reemplazando las suyas.
El siguiente comando agregará todos los servidores de la lista.
fuente