Pregunta ¿Cómo puedo hacer que ssh falle en lugar de pedir una contraseña si falla la autenticación de clave pública?


Tengo un script que guarda varios servidores usando autenticación de clave pública. Uno de los servidores ha dejado de permitir que el script inicie sesión debido a un problema de configuración, lo que significa que el script se atasca con el mensaje "Contraseña:", que obviamente no puede responder, por lo que ni siquiera intenta con el resto de los servidores. en la lista.

¿Hay alguna manera de decirle al cliente ssh que no solicite una contraseña si falla la autenticación de la clave, sino que simplemente informe un error de conexión y deje que mi script continúe?


91
2017-09-03 10:58


origen




Respuestas:


Para OpenSSH también hay BatchMode que, además de deshabilitar la solicitud de contraseña, debe deshabilitar la consulta de las frases de paso para las claves.

Por lotes

Si se establece en "sí", se deshabilitará la frase de contraseña / contraseña.     Esta opción es útil en scripts y otros trabajos por lotes donde no hay     El usuario está presente para proporcionar la contraseña. El argumento debe ser     "si o no". El valor predeterminado es "no".

Uso de la muestra:

ssh -oBatchMode=yes -l <user> <host> <dostuff>

120
2017-09-03 12:09





Agregue lo siguiente a su ~/.ssh/config:

PasswordAuthentication no

y para deshabilitar la autenticación de contraseña en el servidor, agregue la misma línea a /etc/ssh/sshd_config y reiniciar sshd.


12
2017-09-03 11:19



Si no desea deshabilitar la autenticación de contraseña para todas las conexiones de cliente ssh, también puede especificar opciones en la línea de comandos. agregue '-oPasswordAuthentication = no' a su comando ssh. - cas
Esto no impide la solicitud de contraseña. El script de OP todavía se cuelga. - Joshua Swink


Si está utilizando Dropbear, simplemente agregue el "-s"opción para desactivar la autenticación de contraseña.


9
2017-09-03 11:54



+1 por no asumir que el cliente es openssh :-) - cas


En la línea de comando (o ~/.ssh/config) puede establecer PreferredAuthentications.

PreferredAuthentications=publickey

6
2017-09-03 11:39



Creo que, en la línea de comandos, debe ajustar la opción entre comillas y luego pasarla a la opción -o. - Craig Walker
@CraigWalker También puede pasarlo como está, es decir, ssh -o PreferredAuthentications=publickey - Tobias Kienzler
@CraigWalker Necesita comillas si desea usar espacios para separar la opción y el valor, por ejemplo. ssh "-oPreferredAuthentications publickey" - Timo