
Tengo un trabajo de Chron ejecutando un script bash que luego envía SSH a mi servidor. Pero la dirección IP de mi servidor cambia de vez en cuando (mi script bash tiene una forma de buscar la nueva dirección IP). Pero el problema es que entonces mi script bash recibe la advertencia "No se puede establecer la autenticidad del host ...". No quiero usarlo StrictHostKeyChecking=no
debido ahombre en el medioataques. Sin embargo:
Si elclave RSAes idéntico, por ejemplo, a unclave RSAya en el known_host
archivo, o unclave RSAque he guardado en algún otro MyServersPublicKey
archivo, entonces asumo que es mi servidor y simplemente tiene una nueva IP.
La advertencia en sí muestra elhuella dactilardelclave RSAdel host "desconocido", no delclave RSAsí mismo. Supongo que podría salvarme delclave RSA huella dactilarde mi host y luego hacer que mi script bash consuma elhuella dactilarde la advertencia y compararlo con el guardadohuella dactilar. Pero me pregunto si alguien conoce una forma más sencilla.
¿Tengo que escribir mi propio script bash para esto o hay algo disponible?
Respuesta1
Como se indicó en los comentarios, la creación de certificados (claves de host firmadas) le ayudaría a resolver este problema (consulte la página del manual ssh-keygen
, capítulo "Certificados" que describe este procedimiento). Básicamente, crearía una CA en el servidor, firmaría las claves del host y almacenaría la clave pública de la CA en su known_hosts
archivo, como por ejemplo:
@cert-authority * ssh-rsa AAAAB5W...
La otra posibilidad sería escribir algún script bash, que agregaría su IP delante de la clave del host known_hosts
(si no ha codificado ese archivo). Algo así debería funcionar:
sed -i -e "s/your_host/new_ip,your_host/" ~/.ssh/known_hosts