¿Cómo puedo hacer que un usuario pueda iniciar sesión con claves ssh pero no con una contraseña?

17

Me gustaría crear un usuario y no tengo contraseña. Como en no puede iniciar sesión con una contraseña. Quiero agregar claves a sus claves_autorizadas usando root. Esto es para mi sistema de respaldo automatizado.

Jeff Schaller
fuente

Respuestas:

26

El uso de passwd -des simplemente incorrecto , al menos en Fedora , en cualquier distribución de Linux basada en shadow-utils. Si elimina la contraseña con passwd -d, significa que cualquiera puede iniciar sesión en ese usuario (en la consola o gráfico) sin proporcionar contraseña.

Para bloquear los inicios de sesión con autenticación de contraseña, ejecute , que bloquea la cuenta y la pone a disposición solo del usuario raíz. El bloqueo se realiza representando la contraseña encriptada en una cadena no válida (prefijando la cadena encriptada con un!).passwd -l username

Cualquier intento de inicio de sesión, local o remoto, dará como resultado una "contraseña incorrecta" , mientras que el inicio de sesión con clave pública seguirá funcionando. La cuenta se puede desbloquear con .passwd -u username

Si desea bloquear completamente una cuenta sin eliminarla, edite /etc/passwdy configure /sbin/nologino /bin/falseen el último campo. Esto dará como resultado "Esta cuenta no está disponible actualmente". para cualquier intento de inicio de sesión.

Consulte la página de comando man passwd (1).

guido
fuente
@ guido: rvs no será notificado de tu respuesta. Tendría que agregar un comentario a su respuesta para eso (lo he hecho). Tenga en cuenta que los lectores pueden leer su respuesta antes que la suya, debe escribir respuestas que respondan directamente a la pregunta. ¡Bien hecho por señalar esto! Se aplica a la mayoría de las distribuciones de Linux (las que usan las utilidades ocultas de Linux).
Gilles 'SO- deja de ser malvado'
@Gilles: lo siento, soy nuevo en stackexchange; Sólo señalé esta vez un poco difícil porque era como sugerir a los usuarios a las cuentas sin contraseña de configuración, y fue aceptado y se marca como útil ...
guido
@ guido: No te preocupes, solo estaba explicando cómo hacer que tu advertencia sea más efectiva. De hecho, en casos tan extremos en los que una respuesta es peligrosamente incorrecta, sería apropiado sugerir una edición agregando una advertencia o corrección (con suerte, no encontrará estas situaciones con demasiada frecuencia en el sitio).
Gilles 'SO- deja de ser malvado'
@ guido: En realidad, en debian Squeeze (no sé sobre lenny o etch) esa respuesta sí funciona. No permite que nadie más que root inicie sesión, permite autorizar claves pero no es menos contraseña, simplemente no acepta contraseña. Me sorprendió que pudieras 'eliminar la contraseña' y que funcionaría de esta manera. Pero hizo exactamente lo que quería y exactamente lo que hace esta respuesta y fue la única respuesta, así que lo acepté. Esta respuesta tiene más sentido y la aceptaré porque estoy dispuesto a apostar que otras distos permiten que cualquiera inicie sesión sin contraseña a diferencia de Debian. De todos modos buena respuesta.
1
@ acidzombie24, @mattdn: podrían haber eliminado nullok de pam.d / password-auth si debian usa pam (creo que sí, pero no soy un experto en debian). Sin embargo, la página de manual passwd (1) aclara que el argumento -d es crear cuentas sin contraseña, por lo que cualquier especulación específica de la distribución aquí es secundaria, ya que la pregunta era muy general.
guido
2

¿No está pidiendo específicamente al demonio SSH, no aceptar la autenticación basada en contraseña sino la autenticación de clave / frase de contraseña?

Busque cambios en sshd_config.

Conjunto

PasswordAuthentication No
PreferredAuthentications publickey,hostbased,keyboard-interactive
Protocol 2,1

Busque más parámetros de configuración en man ssh_config

Nikhil Mulley
fuente
0

Simplemente no establezca la contraseña para el usuario. Si ya hay una contraseña, elimínela con passwd -l <username>.

Pero aún sería posible iniciar sesión como este usuario, mediante el uso de claves_autorizadas, o mediante su o sudo desde alguna cuenta privilegiada.

rvs
fuente
1
Como señaló guido , passwd -dla cuenta no tiene contraseña, ya que puede iniciar sesión sin tener que escribir una contraseña. Úselo passwd -lpara bloquear la cuenta (piense que es una contraseña imposible de escribir).
Gilles 'SO- deja de ser malvado'
Agregué una advertencia a tu publicación, porque es peligroso como está. Dejaré que usted decida si corregir su respuesta, o eliminar su respuesta (si cree que la respuesta de Guido es suficiente), o refutar la advertencia.
Gilles 'SO- deja de ser malvado'
¿Por qué la gente acepta la respuesta que ni siquiera funciona?
mathepic
@mathepic: funciona, en debian. Exactamente como lo pregunté
¿está seguro de que un usuario sin privilegios no puede hacerlo su?
mattdm