Introducción al error Permission Denied (publickey) en Linux
El protocolo SSH es la herramienta fundamental para la administración remota de servidores Linux. Sin embargo, uno de los problemas más frustrantes que enfrentan los administradores de sistemas y desarrolladores es el mensaje de error Permission denied (publickey) al intentar conectarse mediante la terminal. Este fallo interrumpe por completo la comunicación segura y bloquea el acceso al servidor.
Causas principales del error de autenticación SSH
Este error ocurre generalmente por un desajuste entre las claves criptográficas del cliente y el servidor, o debido a una configuración restrictiva en el demonio SSH. Entre las causas más comunes destacan:
- Permisos incorrectos en el directorio
.ssho en los archivos de claves (authorized_keys). - La clave privada utilizada por el cliente no coincide con ninguna clave pública registrada en el servidor.
- El archivo
sshd_configtiene deshabilitada la autenticación por clave pública. - El usuario que intenta conectarse no tiene los permisos adecuados en el sistema.
Método 1: Corregir los permisos de archivos y carpetas SSH
Linux es extremadamente estricto con los permisos de seguridad. Si la carpeta .ssh o el archivo authorized_keys tienen permisos de escritura para el grupo o otros usuarios, el servidor rechazará la conexión por seguridad.
- Inicia sesión en tu servidor Linux (puedes usar la consola de emergencia de tu proveedor de hosting o VPS).
- Ejecuta el siguiente comando para ajustar los permisos de la carpeta del usuario afectado:
chmod 700 ~/.ssh - Establece los permisos correctos para el archivo de claves autorizadas:
chmod 600 ~/.ssh/authorized_keys - Asegúrate de que el propietario del directorio sea el usuario correcto:
chown -R usuario:usuario ~/.ssh
Método 2: Verificar la configuración del servicio SSH (sshd_config)
Si los permisos son correctos, es posible que la configuración del servidor (/etc/ssh/sshd_config) esté bloqueando este tipo de acceso.
- Abre el archivo de configuración con un editor de texto con privilegios de superusuario:
sudo nano /etc/ssh/sshd_config - Busca las siguientes directivas y asegúrate de que estén descomentadas y configuradas correctamente:
PubkeyAuthentication yesyAuthorizedKeysFile .ssh/authorized_keys. - Guarda los cambios y sal del editor (en Nano presiona
Ctrl+O,Entery luegoCtrl+X). - Reinicia el servicio SSH para aplicar los cambios:
sudo systemctl restart sshd
Método 3: Depurar la conexión SSH desde el cliente
Si el problema persiste, necesitas ver exactamente qué está fallando durante el intercambio de claves ejecutando la conexión con el modo de depuración activado.
- Abre la terminal de tu máquina local y ejecuta el comando SSH añadiendo la bandera
-v(verbose):ssh -v usuario@tu_servidor_ip - Analiza la salida en pantalla para identificar en qué fase exacta falla la autenticación (por ejemplo, si la clave no es ofrecida o si es rechazada explícitamente).
- Si es necesario, vuelve a generar y copiar tu clave pública al servidor utilizando:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@tu_servidor_ip