Introducción al error Permission Denied (publickey) en SSH
Uno de los problemas más frustrantes para los administradores de sistemas y desarrolladores que trabajan en entornos Linux es encontrarse con el mensaje Permission denied (publickey) al intentar conectarse a un servidor remoto mediante SSH. Este error indica que el servidor ha rechazado las credenciales presentadas por el cliente, interrumpiendo por completo la comunicación segura.
Causas principales del error de autenticación SSH
El fallo de clave pública suele estar provocado por una mala configuración en los permisos de los archivos de usuario, la ausencia de la clave pública en el archivo authorized_keys del servidor, o porque el servicio SSH no está cargando la clave privada correcta en el cliente.
Método 1: Verificar y corregir los permisos de archivos y carpetas
Los demonios SSH (como OpenSSH) son extremadamente estrictos con la seguridad. Si los permisos de tu directorio .ssh o de los archivos en su interior son demasiado abiertos, la conexión será rechazada automáticamente.
- Abre tu terminal local o remota.
- Ejecuta el siguiente comando para corregir el permiso de la carpeta
.ssh:chmod 700 ~/.ssh - Asegúrate de que el archivo de claves autorizadas tenga permisos estrictos:
chmod 600 ~/.ssh/authorized_keys - Verifica que los permisos de tu clave privada sean correctos:
chmod 600 ~/.ssh/id_rsa
Método 2: Comprobar que el agente SSH tiene cargada la clave privada
A veces, el cliente SSH no envía la clave correcta al servidor. Debes asegurarte de que tu identidad esté registrada en el agente de autenticación.
- Inicia el agente SSH en segundo plano ejecutando:
eval "$(ssh-agent -s)" - Añade tu clave privada predeterminada con:
ssh-add ~/.ssh/id_rsa - Verifica que la clave se haya añadido correctamente listando las identidades:
ssh-add -l
Método 3: Añadir manualmente tu clave pública al servidor remoto
Si tienes acceso físico o alternativo al servidor (como una consola de rescate), puedes transferir tu clave pública manualmente para garantizar el acceso.
- Copia el contenido de tu clave pública local ejecutando:
cat ~/.ssh/id_rsa.pub - Inicia sesión en el servidor remoto por un método alternativo.
- Abre o crea el archivo de claves autorizadas:
nano ~/.ssh/authorized_keys - Pega la clave pública en una nueva línea, guarda el archivo (Ctrl+O, Enter) y sal (Ctrl+X).