El ssh no me deja iniciar sesión, porque la cuenta está bloqueada. Quiero desbloquear al usuario en mi servidor para la autorización de clave pública a través de ssh, pero no habilito el inicio de sesión con contraseña.
He intentado:
# passwd -u username
passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.
Entradas de registro de autenticación:
Mar 28 00:00:00 vm11111 sshd[11111]: User username not allowed because account is locked
Mar 28 00:00:00 vm11111 sshd[11111]: input_userauth_request: invalid user username [preauth]
passwd -u
Es una mala idea. Vea la respuesta de Giles a continuación.Respuestas:
Desbloquee la cuenta y proporcione al usuario una contraseña compleja como sugiere @Skaperen.
Edite
/etc/ssh/sshd_config
y asegúrese de tener:Verifique que la línea no esté comentada (
#
al inicio) y guarde el archivo. Finalmente, reinicie elsshd
servicio.Antes de hacer esto, asegúrese de que su autenticación de clave pública funcione primero.
Si necesita hacer esto solo para uno (o un pequeño número) de usuarios, deje
PasswordAuthentication
habilitado y en su lugar useMatch User
:Coloque al final del archivo, ya que es válido hasta el siguiente
Match
comando o EOF.También puedes usar
Match Group <group name>
o una negaciónMatch User !bloggs
Como mencionas en los comentarios, también puedes revertirlo para que la autenticación de contraseña esté deshabilitada en la parte principal de la configuración y usar
Match
declaraciones para habilitarla para algunos usuarios:fuente
Match
sintaxis se ve bien, pero voy a intentar revertirla. Habilite el inicio de sesión con contraseña para (pocos usuarios).Hagas lo que hagas, no dejes la cuenta en el estado dejado
passwd -u
, con un campo de contraseña en blanco: eso permite iniciar sesión sin ingresar una contraseña (excepto a través de SSH, porque SSH lo rechaza).Cambie la cuenta para que no tenga contraseña, pero esté desbloqueado. Una cuenta no tiene contraseña si el hash de contraseña en la base de datos de contraseñas no es el hash de ninguna cadena. Tradicionalmente, una cadena de un carácter como
*
o!
se usa para eso.Las cuentas bloqueadas también usan un marcador especial en el campo de contraseña que hace que la cadena no sea el hash de ninguna cadena. El marcador depende del sistema. En Linux, el
passwd
comando marca las contraseñas bloqueadas poniendo un!
al principio, y OpenSSH trata la cuenta como bloqueada si el campo comienza con!
. Otras variantes de Unix tienden a usar mecanismos similares pero no idénticos, así que tenga cuidado si su base de datos de contraseñas se comparte entre una red heterogénea.En Linux, puede deshabilitar el acceso basado en contraseña a una cuenta mientras permite el acceso SSH (con algún otro método de autenticación, generalmente un par de claves) con
El usuario no podrá volver a cambiar la cuenta a una contraseña, ya que eso requiere que ingrese una contraseña válida.
Si lo desea, puede configurar SSH para rechazar la autenticación de contraseña, independientemente de si la cuenta tiene una contraseña. Aún tendrá que hacer arreglos para que SSH no considere que la cuenta está bloqueada, por lo que, por ejemplo, en Linux deberá eliminar el
!
campo de la contraseña (pero no deje el campo vacío; configúrelo*
como se explicó anteriormente) ) Para deshabilitar la autenticación de contraseña para SSH, agregar unaPasswordAuthentication
directiva para/etc/sshd_config
o/etc/ssh/sshd_config
(lo que es en su sistema). Use unMatch
bloque para hacer que esa directiva solo se aplique a un usuario específico;Match
los bloques deben aparecerfuente
usermod -p '*' username
trabajó un encanto!!
prefijo) iniciar sesión con algún otro método de autenticación siUsePAM yes
está configuradosshd_config
. Este es probablemente el valor predeterminado con la mayoría de las distribuciones (por ejemplo, con Fedora).'*'
vs.'!'
es súper útil.No necesita habilitar o establecer contraseñas, y realmente no debería hacerlo, si ya está usando teclas seguras. Simplemente vuelva a bloquear su cuenta (sudo passwd -l username) desde una sesión existente y arregle su configuración SSH.
La razón por la que sucedió esto probablemente se deba a que ha editado una de las configuraciones predeterminadas del demonio SSH (en / etc / ssh / sshd_config).
Cambie esto en / etc / ssh / sshd_config y reinicie SSH:
En general, a menos que tenga una buena razón para deshabilitar PAM, le recomiendo que lo mantenga habilitado; habilitar PAM dentro de SSH le permitirá iniciar sesión, incluso con una contraseña eliminada. Hagas lo que hagas, no establezcas una contraseña vacía o similar ... bloquear el campo de contraseña no tiene que significar bloquear toda tu cuenta.
Consejo rápido al jugar con SSH: mantenga abierta otra sesión (en otra ventana) cada vez que realice cambios en su configuración de SSH, y luego pruebe que aún puede iniciar sesión; Si accidentalmente interrumpe su acceso, use su sesión actual para solucionarlo.
(Descargo de responsabilidad: trabajo en Userify, que proporciona software de administración de claves SSH).
fuente
Tuve este problema en CentOS 7. Soy un usuario habitual de Linux basado en Debian, así que era un pez fuera del agua. Noté que en algunos de los servidores funcionaba y en uno solo no. Audit.log no dijo nada útil y secure.log tampoco dio nada. Descubrí que la única diferencia real era algunas diferencias de contexto de seguridad en los archivos y directorios entre los que funcionaban y los que no. Obtenga la seguridad con
sudo ls -laZ <user-home>/.ssh
del directorio (supongo que hay muchos valores predeterminados en sshd_config).
Deberías ver algunos
ssh_home_t
yuser_home_t
atributos. Si no lo hace, use elchcon
comando para agregar los atributos que faltan.Por ejemplo
En mi caso, mi sospecha es que el usuario fue creado de manera no estándar. Su casa era un directorio en
/var/lib
.Más información en: https://www.linuxquestions.org/questions/linux-security-4/selinux-preventing-ssh-login-with-~-ssh-authorized_keys-4175469538/
fuente
desbloquear la cuenta y cambiar la contraseña a una cadena aleatoria
fuente