Solución 1:
En mi opinión, la mejor manera de hacer esto es la siguiente:
ssh-keygen -R [hostname]
ssh-keygen -R [ip_address]
ssh-keygen -R [hostname],[ip_address]
ssh-keyscan -H [hostname],[ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [hostname] >> ~/.ssh/known_hosts
Eso asegurará que no haya entradas duplicadas, que esté cubierto tanto para el nombre de host como para la dirección IP, y también codificará la salida, una medida de seguridad adicional.
Solución 2:
Establecer el StrictHostKeyChecking
opción a no
, ya sea en el archivo de configuración o a través de -o
:
ssh -o StrictHostKeyChecking=no [email protected]
Solución 3:
Para los perezosos:
ssh-keyscan -H <host> >> ~/.ssh/known_hosts
-H codifica el nombre de host/dirección IP
Solución 4:
Como se mencionó, usar el escaneo de teclas sería la forma correcta y discreta de hacerlo.
ssh-keyscan -t rsa,dsa HOST 2>&1 | sort -u - ~/.ssh/known_hosts > ~/.ssh/tmp_hosts
mv ~/.ssh/tmp_hosts ~/.ssh/known_hosts
Lo anterior hará el truco para agregar un host, SOLO si aún no se ha agregado. Tampoco es seguro para la concurrencia; no debes ejecute el fragmento en la misma máquina de origen más de una vez al mismo tiempo, ya que el archivo tmp_hosts puede ser golpeado, lo que en última instancia hace que el archivo unknown_hosts se hinche...
Solución 5:
Podrías usar ssh-keyscan
comando para obtener la clave pública y agregarla a su known_hosts
archivo.