Introducción al Error Permission Denied (publickey)
Uno de los problemas más comunes a los que se enfrentan los administradores de sistemas y desarrolladores al utilizar sistemas Linux es el temido mensaje Permission denied (publickey) al intentar conectarse a un servidor remoto mediante SSH. Este fallo indica que el servidor ha rechazado tus credenciales porque la clave pública proporcionada no está autorizada o no se encuentra correctamente configurada en el archivo authorized_keys.
Causas Principales del Error
Las razones por las cuales Linux bloquea tu acceso SSH pueden variar desde permisos incorrectos en los directorios hasta claves mal configuradas. Entre las causas más frecuentes se encuentran:
- Permisos demasiado abiertos en la carpeta
.ssho en el archivoauthorized_keys. - El agente SSH no está cargando la clave privada correcta.
- La clave pública no ha sido añadida correctamente al servidor remoto.
- El archivo de configuración del servidor SSH (
sshd_config) tiene deshabilitada la autenticación por claves.
Método 1: Corregir los Permisos de Archivos y Directorios
Linux es extremadamente estricto con la seguridad. Si los permisos de tu directorio .ssh o de tus archivos de claves son demasiado permisivos (por ejemplo, si tienen permisos de escritura para el grupo o otros), el servidor rechazará la conexión por seguridad.
- Abre tu terminal en la máquina local o conéctate mediante la consola de rescate de tu proveedor.
- Ejecuta el siguiente comando para asegurar que el directorio
.sshtenga permisos 700:chmod 700 ~/.ssh - Ajusta los permisos del archivo de claves privadas a 600:
chmod 600 ~/.ssh/id_rsa - Ajusta los permisos del archivo authorized_keys en el servidor remoto a 600:
chmod 600 ~/.ssh/authorized_keys
Método 2: Verificar y Añadir la Clave al Agente SSH
A veces, el cliente SSH no envía la clave correcta al servidor. Debemos asegurarnos de que el agente esté activo y cargando nuestra identidad.
- Inicia el agente SSH en segundo plano ejecutando:
eval "$(ssh-agent -s)" - Añade tu clave privada predeterminada con el comando:
ssh-add ~/.ssh/id_rsa - Verifica que la clave se haya cargado correctamente listando las identidades activas:
ssh-add -l
Método 3: Revisar la Configuración del Servidor SSH (sshd_config)
Si los pasos anteriores no funcionan, el problema podría residir en la configuración global del demonio SSH en el servidor remoto.
- Accede al servidor y abre el archivo de configuración con privilegios de superusuario:
sudo nano /etc/ssh/sshd_config - Busca las siguientes líneas y asegúrate de que estén descomentadas y configuradas correctamente:
PubkeyAuthentication yesyAuthorizedKeysFile .ssh/authorized_keys - Guarda los cambios y reinicia el servicio SSH para aplicar la nueva configuración:
sudo systemctl restart sshd