Introducción al Error Permission Denied (publickey) en SSH
El error Permission Denied (publickey) es uno de los problemas más comunes a los que se enfrentan los administradores de sistemas y desarrolladores al intentar conectarse a un servidor remoto mediante SSH en sistemas Linux. Este fallo indica que el servidor ha rechazado las credenciales presentadas por el cliente, impidiendo la autenticación.
Causas Principales del Error SSH
Existen diversos motivos por los cuales Linux puede denegar el acceso mediante llaves SSH. Entre los más habituales se encuentran:
- 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 el par de claves incorrecto o el agente SSH no tiene cargada la llave correcta.
Método 1: Corregir los Permisos de Archivos y Directorios
Linux es extremadamente estricto con la seguridad de las claves SSH. Si los permisos son demasiado abiertos, el servidor rechazará la conexión automáticamente.
- Abre tu terminal local e ingresa a tu directorio personal:
cd ~ - Asegúrate de que la carpeta
.sshtenga permisos 700 ejecutando:chmod 700 ~/.ssh - Modifica los permisos del archivo de clave privada para que solo tú puedas leerlo y escribirlo:
chmod 600 ~/.ssh/id_rsa(o id_ed25519 según corresponda). - Conéctate al servidor e ingresa al directorio
~/.sshpara aplicar los mismos permisos seguros al archivoauthorized_keys:chmod 600 ~/.ssh/authorized_keys
Método 2: Verificar la Configuración del Servidor SSH (sshd_config)
Si los permisos son correctos, el problema podría residir en las directivas de seguridad configuradas en el demonio SSH del servidor.
- Accede al servidor utilizando otro método o consola de emergencia y edita el archivo de configuración:
sudo nano /etc/ssh/sshd_config - Busca las siguientes líneas y asegúrate de que estén descomentadas y configuradas de la siguiente forma:
PubkeyAuthentication yesyAuthorizedKeysFile .ssh/authorized_keys. - Guarda los cambios y reinicia el servicio SSH para aplicar la nueva configuración:
sudo systemctl restart sshd
Método 3: Depurar la Conexión con Verbose Mode
Si el error persiste, necesitas ver exactamente qué está fallando durante el intercambio de claves.
- Ejecuta el comando de conexión SSH añadiendo la bandera
-vpara activar el modo detallado:ssh -v usuario@tu-servidor-ip - Revisa las líneas de salida en la terminal para identificar en qué fase exacta del proceso de autenticación se produce el rechazo y actúa en consecuencia.