Sin embargo, otra opción es una variante de @Jagadish 's respuesta : para strace
el demonio ssh.
Tiene la ventaja significativa de que no necesitamos detener el sshd, lo que puede resultar en un bloqueo completo si algo sale mal.
Primero, encontramos el pid del proceso sshd principal. Aquí podemos verlo ejecutando a pstree -pa|less
.
|-sshd,633 -D <-- THIS IS WHAT WE WANT!
| `-sshd,21973
| `-sshd,21996
| `-bash,22000
| `-screen,638 -r
Después de saber que el pid es 633, podemos strace
hacerlo, siguiendo a sus hijos:
strace -p 633 -s 4096 -f -o sux
El resultado será que todo lo que este sshd, y sus procesos secundarios han hecho, se dividirá en el archivo nombrado sux
en el directorio local.
Luego reproduce el problema.
Tendrá una lista masiva de registro de llamadas del núcleo, que en su mayoría es incomprensible / irrelevante para nosotros, pero no en todas partes. En mi caso, lo importante fue esto:
6834 sendto(4, "<38>Jan 15 18:49:21 sshd[6834]: User cica not allowed because account is locked\0", 84, MSG_NOSIGNAL, NULL, 0) = 84
Fue mentos, que el sshd intentó registrar el mensaje El usuario cica no está permitido porque la cuenta está bloqueada , solo que no pudo, porque el registro no es lo suficientemente detallado para eso. Pero ya sabemos, se rechazó la clave pública porque la cuenta estaba bloqueada.
Todavía no es una solución: ahora necesitamos googlear, lo que significa una "cuenta bloqueada" en el caso del sshd. Lo más probable es que sea algo trivial /etc/passwd
, /etc/shadow
mágico, pero lo importante está hecho: el problema no es misterioso, sino fácil de depurar / buscar en Google.