Qué ves
user@server's password:
Permission denied, please try again.
user@server's password:
Permission denied, please try again.
user@server's password:
user@server: Permission denied (publickey,password).
SSH pregunta tres veces por defecto y luego imprime la última línea. La lista entre paréntesis es lo que el servidor aún acepta. Si no incluye password, o nunca te salió el prompt de contraseña, tienes otro problema: mira Permission denied (publickey).
Prueba el inicio de sesión con contraseña por separado
Esto descarta claves y agentes, y pregunta una sola vez:
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password -o NumberOfPasswordPrompts=1 user@server
Causa 1: el nombre de usuario es incorrecto
Sin user@, SSH envía tu nombre de usuario local, o el de tu configuración:
ssh -G server | grep '^user '
Un usuario que no existe recibe el mismo prompt de contraseña y el mismo rechazo, así que parece exactamente una contraseña incorrecta. Las imágenes de la nube suelen usar ubuntu, debian o ec2-user en lugar de root.
Para fijar el usuario de un host de una vez, pon una línea User en su bloque del archivo de configuración de ssh.
Causa 2: la contraseña es incorrecta
Comprueba lo obvio: la distribución del teclado, el bloqueo de mayúsculas y los caracteres ocultos de un pegado. SSH no muestra nada mientras escribes. El prompt también importa: Enter passphrase for key pide la frase de contraseña de tu archivo de clave, mientras que user@server's password: pide la contraseña de la cuenta en el servidor.
Lee el log del servidor
Si puedes llegar al servidor de otra forma, como la consola de un proveedor, esto lo resuelve. En Debian y Ubuntu:
sudo journalctl -u ssh -n 30
En sistemas tipo Red Hat usa -u sshd. Los sistemas más antiguos registran en /var/log/auth.log o /var/log/secure.
| Línea del log | Significado |
|---|---|
Failed password for invalid user name | Ese usuario no existe en el servidor, o AllowUsers lo excluye |
User name from ... not allowed because not listed in AllowUsers | El usuario existe pero no está en la lista |
Failed password for name | El usuario existe y falló la comprobación de la contraseña. Es la contraseña incorrecta, o una de las causas 3 y 4 |
| Ninguna línea | Estás llegando a otro servidor o puerto. Comprueba ssh -G server | grep -E '^(hostname|port) ' |
Causa 3: root no puede iniciar sesión con contraseña
El valor por defecto de PermitRootLogin es prohibit-password. Con este ajuste, sshd sigue mostrando el prompt y responde con este mensaje incluso cuando la contraseña de root es correcta, y el log dice Failed password for root. Por eso el log no revela el motivo real. Pregunta directamente a sshd:
sudo sshd -T -C user=root,host=server,addr=203.0.113.10 | grep -i '^permitrootlogin'
Un resultado de prohibit-password o su nombre antiguo without-password lo confirma. Inicia sesión como usuario normal y usa sudo, o usa una clave para root. Mira Desactivar el acceso de root.
Causa 4: la cuenta está bloqueada
sudo passwd -S name
El segundo campo es L si está bloqueada, P si tiene una contraseña utilizable y NP si no tiene contraseña. Una cuenta bloqueada da el mismo rechazo, y el log vuelve a decir solo Failed password. Desbloquéala o fija una contraseña nueva:
sudo passwd -u name
sudo passwd name
Una cuenta caducada da otro texto, Your account has expired; please contact your system administrator. Compruébalo con sudo chage -l name. Una shell nologin te deja entrar y luego imprime This account is currently not available.
Causa 5: AllowUsers, DenyUsers y sus versiones por grupo
Estas reglas rechazan a un usuario incluso con la contraseña correcta. Mira qué se aplica a ese usuario, incluidos los bloques Match:
sudo sshd -T -C user=name,host=server,addr=203.0.113.10 | grep -iE '^(allowusers|denyusers|allowgroups|denygroups)'
Recuerda revisar los archivos de /etc/ssh/sshd_config.d/. Después de editar, ejecuta sudo sshd -t y recarga el servicio.
Demasiados intentos
Los fallos repetidos pueden llevar a un síntoma nuevo: la conexión se corta antes del prompt de contraseña. Eso es una penalización o un bloqueo. Mira kex_exchange_identification y fail2ban.
Preguntas
¿Por qué SSH dice Permission denied si la contraseña es correcta?
A menudo el usuario es incorrecto, root no puede usar contraseña (PermitRootLogin prohibit-password), la cuenta está bloqueada o AllowUsers deja fuera al usuario. El log del servidor dice el motivo real.
¿Cuántos intentos de contraseña permite SSH?
El cliente pregunta tres veces por defecto (NumberOfPasswordPrompts). El servidor acepta hasta MaxAuthTries, 6 por defecto, sumando todos los métodos.
¿Un usuario incorrecto da un error distinto?
No. Un usuario que no existe recibe la misma petición de contraseña y el mismo rechazo. Solo el log del servidor muestra invalid user.
Fuentes
- sshd_config(5), PermitRootLogin, AllowUsers
- ssh_config(5), NumberOfPasswordPrompts
- passwd(1), man-pages de Linux