¿Cómo hago para que ssh falle en lugar de solicitar una contraseña si falla la autenticación de clave pública?


107

Tengo un script que envía 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 prueba 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 clave, sino que simplemente informe un error al conectarse y deje que mi script continúe?

Respuestas:


138

Para OpenSSH existe BatchMode, que además de deshabilitar la solicitud de contraseña, debe deshabilitar la consulta de frases de contraseña para las claves.

Por lotes

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

Uso de la muestra:

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

Esto deshabilitó la autenticación de clave pública para mí. Sin embargo, estaba especificando como ssh user @ host -C somecommand. Lo que terminó trabajando para mí es solossh user@host -oPreferredAuthentications=publickey -C 'echo success'
AB Carroll

20

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 /etc/ssh/sshd_configy reinicie sshd.


77
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 comando. agregue '-oPasswordAuthentication = no' a su comando ssh.
cas

77
Esto no impide que se solicite la contraseña. La secuencia de comandos de OP seguirá colgando.
Joshua Swink el

11

Si está utilizando dropbear, simplemente agregue la -sopción " " para deshabilitar la autenticación de contraseña.


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

8

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

PreferredAuthentications=publickey

Creo que, en la línea de comando, debe ajustar la opción entre comillas y luego pasarla a la opción -o.
Craig Walker

3
@CraigWalker También puedes pasarlo como está, es decirssh -o PreferredAuthentications=publickey
Tobias Kienzler

@CraigWalker Necesita comillas si desea usar espacios para separar la opción y el valor, por ejemplossh "-oPreferredAuthentications publickey"
Timo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.