PAM: Authentication failure for illegal – Not allowed because shell /bin/bash\r does not exist

Error de Login como Root

Hoy me toco ver que pasaba con un servidor centos con WHM:cPanel en el que no se podía acceder con el usuario root por SSH

: error: PAM: Authentication failure for illegal user root from IP
: Failed keyboard-interactive/pam for invalid user root from IP port 38127 ssh2
: Postponed keyboard-interactive for invalid user root from IP port 38127 ssh2
: User root not allowed because shell /bin/bash\r does not exist
: input_userauth_request: invalid user root

Lo más extraño fue que no se hizo nada, no se edito ningún archivo, simplemente fallo.

El problema fue este -> /bin/bash\r una linea con un carácter de escape de windows, los únicos dos lugares posibles que pudieron afectar eran:

/etc/passwd
/etc/shells

La solución fue muy sencilla, instalar dos2unix:

yum install dos2unix

Aunque claro, no podemos entrar como root… así que tenemos que reiniciar en rescuemode si tenemos, podemos hacerlo eso desde ahí o bien como en este caso usamos un usuario con privilegios, uno que pueda usar sudo, aunque, en este caso tampoco funcionaba sudo su, pero si sudo, así que esas son dos formas de hacerlo, si no tenemos rescue en el servidor y tampoco un usuario extra con privilegios, no podremos hacer mucho y es mejor que el soporte del la empresa que nos vendió el servidor sea bueno.

Bueno volviendo al tema, por si acaso hacemos respaldo de passwd y shells, puede ser con cp algo así:

cp /etc/passwd /etc/passwd-bak

Y listo procedemos a corregir el archivo ( con sudo o sin sudo depende de los privilegios que tengamos ):

dos2unix /etc/passwd

La única linea que returna es:

dos2unix: converting file /etc/passwd to UNIX format ...

El programa tiene muchas más opciones, podemos ver la guía enter con man o desde aquí