
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=yes
para ssh
invocació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 ask
y 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=yes
para 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.