Orden de autenticación con SSH

22

Cuando inicio sesión a través de ssh con -vveo que ssh se autentica de la siguiente manera

debug1: Authentications that can continue: publickey,gssapi-with-mic,password,hostbased

Me gustaría cambiar el orden ... ¿alguna idea de cómo?

Mi mayor problema es que el usuario con cuentas bloqueadas todavía puede iniciar sesión mediante claves públicas. He descubierto que podría agregar al usuario a un grupo "ssh-bloqueado" agregar negar que ese grupo sshing, pero todavía me pregunto si hay una manera de decirle a ssh'd: compruebe la contraseña antes de las teclas ...

Oz123
fuente
1
Creo que te estás acercando a esto de la manera incorrecta: las claves son (generalmente) más seguras que las contraseñas. Si la cuenta está bloqueada, debe decirle al demonio sshd que no permita que el usuario inicie sesión independientemente del método de autenticación.
EightBitTony
Como dije, encontré una solución, a través de DenyGroups. Lo estoy pidiendo por interés.
Oz123

Respuestas:

31

El servidor ssh decide qué opciones de autenticación permite, el cliente ssh se puede configurar para decidir en qué orden probarlas.

El cliente ssh usa la PreferredAuthenticationsopción en el archivo de configuración ssh para determinar esto.

De man ssh_config( verlo en línea aquí ):

PreferredAuthentications
             Specifies the order in which the client should try protocol 2 authentication methods.  This allows a client to prefer
             one method (e.g. keyboard-interactive) over another method (e.g. password).  The default is:

                   gssapi-with-mic,hostbased,publickey,
                   keyboard-interactive,password

No creo que sea posible, sin jugar con la fuente, decirle al servidor OpenSSH que prefiera un cierto orden; si lo piensa, de todos modos no tiene sentido.

OchoBitTony
fuente
Si está utilizando Git Bash para Windows, guardar la configuración de ssh para~/.ssh/config
Spencer Williams
El orden puede tener sentido si un método depende de uno anterior. Por ejemplo, 2FA bajo teclado interactivo puede depender de que el usuario haya proporcionado primero una contraseña válida.
steveayre
¿Puede publicar una fuente donde copió y pegó la información de Autenticaciones Preferidas de arriba? No lo veo en man ssh, ni en /etc/ssh/ssh_config, ni en /etc/ssh/sshd_config. ¿De dónde sacaste ésta información?
Gabriel Staples
¡Lo encontré! Estaba adentro man ssh_config. Envié una edición para revisión para actualizar su respuesta para contener esta fuente. ¡Cita las fuentes la próxima vez! Muchas gracias.
Gabriel Staples
18

Agregando esto:

PreferredAuthentications keyboard-interactive,password,publickey,hostbased,gssapi-with-mic

... a mi /etc/ssh/ssh_configme ayudó a resolver esto, ¡y ahorré mucho tiempo también!

Puede verificar si funciona utilizando el ssh -v user@hostcomando para conectarse, donde -vsignifica "detallado".

Pavel Anni
fuente
2
Asegúrese de agregar esto al archivo correcto ssh_configy no sshd_config. ¡Esto último hará que tu ssh falle!
Naranjas13
0

Agregando a las otras dos respuestas que ya mencionan la PreferredAuthenticationsopción, me gustaría agregar que no necesita editar ningún archivo para establecer esta configuración si no lo desea . Por el contrario, puede configurarlo en la línea de comandos para una llamada individualssh , con la -oopción, de la siguiente manera:

ssh -o PreferredAuthentications=publickey,gssapi-with-mic,hostbased,keyboard-interactive,password user@hostname

Referencias

  1. Para leer más sobre la PreferredAuthenticationsopción, consulte man ssh_config( ver en línea aquí ). Lea también sobre la ssh -oopción en las man sshpáginas del manual (en línea aquí ).
Gabriel Staples
fuente