Introducción al error Permission Denied (publickey) en Linux
Uno de los problemas más comunes al intentar conectarse a un servidor remoto mediante SSH en sistemas operativos basados en Linux es el fallo de autenticación Permission denied (publickey). Este error ocurre cuando el servidor rechaza la clave pública del usuario que intenta acceder, impidiendo por completo la conexión segura. A continuación, exploraremos las causas y la solución definitiva para recuperar el acceso a tu servidor.
Causas principales del fallo de autenticación SSH
- Permisos incorrectos en el directorio
.ssho en los archivos de claves. - La clave pública no está registrada en el archivo
authorized_keysdel servidor remoto. - El servicio SSH no está configurado para permitir la autenticación por clave pública.
- Se está intentando usar una clave privada incorrecta o no se ha especificado el archivo de identidad adecuado.
Método 1: Corregir los permisos de archivos y directorios SSH
El motivo más frecuente de este error son los permisos demasiado abiertos en el directorio de configuración SSH del usuario. Linux es sumamente estricto con esto. Sigue estos pasos para solucionarlo:
- Inicia sesión en tu servidor mediante una consola de emergencia o método alternativo.
- Ejecuta el siguiente comando para ajustar los permisos de la carpeta .ssh:
chmod 700 ~/.ssh - Establece los permisos correctos para el archivo authorized_keys:
chmod 600 ~/.ssh/authorized_keys - Verifica que el propietario de los archivos sea el usuario correcto:
sudo chown -R $USER:$USER ~/.ssh
Método 2: Verificar y añadir la clave pública al servidor
Si la clave no se copió correctamente, el servidor la rechazará. Asegúrate de registrar tu clave pública ejecutando el siguiente comando desde tu máquina local:
- Copia tu clave ejecutando:
ssh-copy-id usuario@tu_servidor_ip - Si el puerto SSH es diferente, especifícalo así:
ssh-copy-id -p 2222 usuario@tu_servidor_ip - Prueba la conexión nuevamente utilizando el comando verbose para depurar:
ssh -v usuario@tu_servidor_ip
Método 3: Revisar la configuración del demonio SSH (sshd_config)
En ocasiones, la configuración del servidor bloquea este método de acceso. Debes editar el archivo de configuración del servicio SSH:
- Abre el archivo de configuración con privilegios de administrador:
sudo nano /etc/ssh/sshd_config - Busca y asegúrate de que las siguientes líneas estén activas y descomentadas:
PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys - Guarda los cambios y reinicia el servicio SSH para aplicar la nueva configuración:
sudo systemctl restart ssh