Introducción al error Permission Denied (publickey) en Linux
El error Permission Denied (publickey) es uno de los problemas más comunes al intentar conectarse a un servidor remoto o VPS mediante el protocolo SSH en sistemas Linux. Este fallo ocurre cuando el servidor rechaza la clave pública proporcionada por tu equipo cliente, impidiendo la autenticación. Aunque puede resultar frustrante, existen métodos sencillos para identificar la causa y solucionarlo definitivamente.
Causas principales del fallo de autenticación SSH
Entre los motivos más habituales que provocan este error en la terminal se encuentran:
- Permisos incorrectos en el directorio
.ssho en los archivos de claves del usuario. - La clave pública no está registrada correctamente en el archivo
authorized_keysdel servidor remoto. - El servicio SSH en el servidor tiene deshabilitada la autenticación por clave pública o exige contraseña.
- Estás intentando conectar con el archivo de identidad incorrecto o no se ha cargado en el agente SSH.
Método 1: Corregir los permisos de archivos y carpetas SSH
Uno de los motivos más frecuentes es una mala configuración de permisos en Linux. Las carpetas y archivos de seguridad deben tener permisos estrictos para que el demonio SSH los acepte.
- Abre tu terminal local y conéctate al servidor o revisa tu equipo local ejecutando el siguiente comando para corregir el directorio principal:
chmod 700 ~/.ssh - Asegúrate de que el archivo de la clave privada tenga los permisos restrictivos correctos:
chmod 600 ~/.ssh/id_rsa - En el servidor remoto, verifica que la carpeta de configuración y el archivo de autorizaciones tengan permisos seguros:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
Método 2: Añadir la clave pública manualmente al servidor remoto
Si la clave no se copió de forma correcta mediante el comando ssh-copy-id, puedes transferirla de forma manual.
- Muestra el contenido de tu clave pública ejecutando en tu máquina local:
cat ~/.ssh/id_rsa.pub - Copia la cadena de texto que aparece en pantalla.
- Accede a tu servidor remoto utilizando un método alternativo (como la consola de rescate de tu proveedor de hosting) y abre el archivo de claves autorizadas:
nano ~/.ssh/authorized_keys - Pega la clave pública al final del documento, guarda los cambios presionando
Ctrl + Oy sal conCtrl + X.
Método 3: Verificar la configuración del servicio SSH (sshd_config)
Si el servidor rechaza las conexiones a pesar de tener las claves correctas, es posible que el archivo de configuración del demonio SSH bloquee este acceso.
- Abre el archivo de configuración global con privilegios de superusuario:
sudo nano /etc/ssh/sshd_config - Busca las siguientes directivas y asegúrate de que estén descomentadas y configuradas de esta manera:
PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys - Guarda el archivo y reinicia el servicio SSH para aplicar los cambios en tu distribución Linux ejecutando:
sudo systemctl restart sshosudo systemctl restart sshd