ssh: "Acceso denegado por la configuración de la cuenta PAM" para un usuario no root pero no para otro

24

En una máquina virtual que estoy inicializando, puedo iniciar sesión como un usuario no root ( admin) pero no otro ( tbbscraper) a través de SSH con autenticación de clave pública. El único mensaje de error que puedo encontrar en cualquier archivo de registro es

Sep 18 17:21:04 [REDACTED] sshd[18942]: fatal: Access denied for user tbbscraper by PAM account configuration [preauth]

En el lado del cliente, el síndrome es

$ ssh -v -i [REDACTED] tbbscraper@[REDACTED]
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: [REDACTED]
debug1: Authentications that can continue: publickey
debug1: Trying private key: [REDACTED]
debug1: read PEM private key done: type RSA
Connection closed by [REDACTED]

Cambiar 'tbbscraper' a 'admin' permite un inicio de sesión exitoso: debug1: Authentication succeeded (publickey).aparece en lugar del mensaje "Conexión cerrada".

Esto no parece ser un problema de permisos ...

# for x in admin tbbscraper
> do ls -adl /home/$x /home/$x/.ssh /home/$x/.ssh/authorized_keys
> done
drwxr-xr-x 3 admin admin 4096 Sep 18 17:19 /home/admin
drwx------ 2 admin admin 4096 Sep 18 16:53 /home/admin/.ssh
-rw------- 1 admin admin  398 Sep 18 17:19 /home/admin/.ssh/authorized_keys
drwxr-xr-x 3 tbbscraper tbbscraper 4096 Sep 18 17:18 /home/tbbscraper
drwx------ 2 tbbscraper tbbscraper 4096 Sep 18 17:18 /home/tbbscraper/.ssh
-rw------- 1 tbbscraper tbbscraper  398 Sep 18 17:18 /home/tbbscraper/.ssh/authorized_keys

# cmp /home/{admin,tbbscraper}/.ssh/authorized_keys ; echo $?
0

... ni un problema de control de acceso a nivel PAM ...

# egrep -v '^(#|$)' /etc/security/*.conf
#

... así que ninguna de las respuestas existentes a preguntas similares parecería aplicarse. La única otra evidencia que tengo es:

root@[REDACTED] # su - admin
admin@[REDACTED] $

pero

root@[REDACTED] # su - tbbscraper
su: Authentication failure
(Ignored)
tbbscraper@[REDACTED] $

lo que sugiere algún problema de PAM a gran escala, pero no puedo encontrar nada obviamente malo con el contenido /etc/pam.d. ¿Algunas ideas?

La VM es una instancia EC2, el sistema operativo es Debian 7.1 (AMI estándar de Amazon).

zwol
fuente
/etc/pam.d/sshdpor favor
GioMac
@GioMac No importa, encontré el problema.
zwol

Respuestas:

29

Después de todo eso, resulta haber sido un error tipográfico de un carácter /etc/shadow. Encuentra la diferencia:

admin:!:15891:0:99999:7:::
tbbscraper:!::15966:0:99999:7:::

Así es, hay dos puntos después del signo de exclamación en la tbbscraperlínea. Eso empuja todos los campos sobre uno y hace que PAM piense que la cuenta expiró el 8 de enero de 1970.

zwol
fuente
99
Gracias por publicar. Esto fue útil para mí: había creado manualmente una entrada de usuario en / etc / passwd y olvidé agregar una entrada correspondiente / etc / shadow.
spazm
66
@spazm Gracias por comentar. Esto fue útil para mí: copié manualmente a los usuarios de otra máquina y olvidé copiar la entrada / etc / shadow del usuario sin contraseña.
Jayen
8

Gracias por publicar su pregunta. Recibía el mismo error, pero mi problema no estaba relacionado con el archivo shadow. Encontré mi solución y quería publicar una respuesta también para cualquier otra persona que busque en Google este error. Esta pregunta predeterminada del servidor aparece primero.

Intenta revisar el /etc/security/access.conf!

Estamos utilizando Active Directory para la autenticación, pero necesitaba iniciar sesión como usuario local que no es de AD (jenkins). Mi jefe había configurado originalmente la caja con estas líneas en /etc/security/access.conf:

+:root:ALL
-:ALL:ALL

Lo cambié a lo siguiente y los inicios de sesión ahora funcionan; Ni siquiera necesité reiniciar ningún servicio.

+:jenkins:ALL
+:root:ALL
-:ALL:ALL
BoomShadow
fuente
3

Tenía el mismo mensaje de error. Apagó el sshd y lo reinició en modo de depuración

    /usr/sbin/sshd -ddd

esto indicaba la razón:

    debug3: User autossh not allowed because account is locked
            ...
    input_userauth_request: invalid user <username> [preauth]

Cuenta comprobada:

    passwd -S <username>

que mostró que la cuenta estaba bloqueada (marca "L") Desbloqueó la cuenta configurando una nueva contraseña:

    passwd <username>

Hecho.

MarkHelms
fuente
2

Tengo el mismo problema esta mañana, pero el servidor autentica a los usuarios con Active Directory. Resulta que la contraseña de dominio del usuario había expirado.

Ab_Ro
fuente
2
Mismo fenómeno, diferente fuente de información de la cuenta de usuario :-) Es posible que debiera haber presentado un error contra ssh y / o PAM hace dos años, pidiendo un registro más claro de por qué se denegó un intento de inicio de sesión; Hay un argumento de seguridad para no decirle a la persona que hizo el intento por qué falló, pero eso no se aplicaría a los registros del sistema.
zwol
2

En mi caso, estaba cambiando el nombre de los usuarios locales de CentOS 6, y olvidé cambiarles el nombre en / etc / shadow (que están autenticados sin contraseña, no aparecieron en mi mente), por lo que los registros de los nuevos nombres de usuario eran solo ausente en / etc / shadow. En / var / log / secure me estaba dando un error unix_chkpwd y acceso denegado por PAM:

    unix_chkpwd[12345]: could not obtain user info (user2)
    sshd[12354]: fatal: Access denied for user user2 by PAM account configuration
kuz8
fuente
1
usermod (8) es tu amigo la próxima vez ;-)
Michael Shigorin
0

En mi caso fue basura golpeando '' / etc / tcb / USER / shadow '' después de la corrupción ext4 rootfs en condiciones "interesantes"; se veía bastante tupido, por lo que no se detectó durante el examen inicial (no puede reinstalar el nodo en este momento, pero tendrá que hacerlo).

Michael Shigorin
fuente
0

Tuve el mismo problema y ninguna de las opciones sugeridas funcionó. Pero encontré en uno de los foros ( https://ubuntuforums.org/showthread.php?t=1960510 ) una "solución" que funcionó perfectamente.

Editar /etc/ssh/sshd_configy configurar

UsePAM no

Si bien probablemente no sea la solución real, porque definitivamente algo está mal con mi máquina (¡ayer funcionaba bien!), Esta al menos funciona.

El Padrino
fuente