Falla si se desconoce la clave de host remoto SSH

Falla si se desconoce la clave de host remoto SSH

Estoy usando una herramienta que depende de ssh para conectarme a un host remoto. Desafortunadamente, esta herramienta no acepta entradas del usuario y cuando se desconoce la clave del host remoto, la llamada se cuelga para siempre. ¿Existe una opción o un conjunto de opciones que hacen que la invocación ssh falle cuando se desconoce la clave del host remoto?

Respuesta1

Uso -o StrictHostKeyChecking=yespara sshinvocación:

Si este indicador está configurado en sí, ssh(1) nunca agregará automáticamente claves de host al archivo ~/.ssh/known_hosts y se negará a conectarse a hosts cuya clave de host haya cambiado.

El valor predeterminado es asky es por eso que tienes un problema:

Si este indicador está configurado para preguntar (el valor predeterminado), se agregarán nuevas claves de host a los archivos de host conocidos del usuario solo después de que el usuario haya confirmado que eso es lo que realmente quiere hacer, y ssh se negará a conectarse a los hosts cuya clave de host ha cambiado.

Respuesta2

Como solución alternativa, puede comprobar usted mismo si el host es de confianza:

$ ssh-keygen -H -F host.example.com
# Host host.example.com found: line 205 type RSA
...

Tenga en cuenta que ssh-keygen sale con 0 en cualquier caso aquí, por lo que debe verificar el resultado:

ssh-keygen -H -F host.example.com |
   grep -q found: || echo "host is not trusted" && exit 2

Respuesta3

Puede usarlo -oBatchMode=yespara fallar cuando se requiera la interacción del usuario (por ejemplo, solicitar una contraseña, verificar la clave del host remoto, etc.)

Respuesta4

Puede agregar opciones predeterminadas en ~/.ssh/config como:

Host *
    StrictHostKeyChecking no

Esto desactiva ssh quejándose de claves de host desconocidas o modificadas.

Puede limitar estas opciones a un conjunto de hosts proporcionando un patrón de host apropiado.

información relacionada