Introducción
Uno de los dolores de cabeza más comunes para los administradores de sistemas y desarrolladores que utilizan Linux es el frustrante mensaje Permission denied (publickey) al intentar conectarse a un servidor remoto mediante SSH. Este fallo de autenticación impide el acceso por completo, bloqueando la gestión del sistema.
¿Cuáles son las causas del error Permission Denied?
Este problema ocurre generalmente debido a una de las siguientes razones:
- Los permisos de los archivos o directorios de la clave SSH son demasiado abiertos.
- La clave pública no está correctamente agregada en el archivo
authorized_keysdel servidor remoto. - El servicio SSH no está configurado para permitir la autenticación por clave pública.
- Estás intentando autenticarte con la clave privada incorrecta.
Método 1: Corregir los permisos de la clave SSH y del directorio .ssh
Linux es extremadamente estricto con la seguridad. Si los permisos de tu carpeta .ssh o de tus claves son incorrectos, el cliente o el servidor rechazarán la conexión automáticamente.
- Abre tu terminal en la máquina local.
- Ejecuta el siguiente comando para asegurar los permisos correctos en tu directorio
.ssh:chmod 700 ~/.ssh - Asegúrate de que los permisos de tu clave privada sean correctos (solo lectura para el propietario):
chmod 600 ~/.ssh/id_rsa(o id_ed25519 según corresponda). - Vuelve a intentar la conexión SSH.
Método 2: Verificar y añadir la clave pública en el servidor remoto
Si los permisos son correctos, el problema podría ser que el servidor no reconoce tu clave pública.
- Si aún tienes acceso al servidor por otro medio, o usando contraseña (si está habilitada), inicia sesión.
- Verifica que el archivo
authorized_keysexista dentro del directorio~/.ssh/del usuario con el que intentas conectar:ls -la ~/.ssh/ - Si no existe, créalo y dale los permisos adecuados:
touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys - Copia el contenido de tu clave pública local (
id_rsa.pub) y añádelo como una nueva línea dentro del archivoauthorized_keysen el servidor.
Método 3: Revisar la configuración del demonio SSH en el servidor (sshd_config)
A veces, el servidor rechaza las claves públicas porque la configuración del servicio SSH las tiene deshabilitadas explícitamente.
- Accede al servidor y abre el archivo de configuración con privilegios de administrador:
sudo nano /etc/ssh/sshd_config - Busca las siguientes líneas y asegúrate de que estén descomentadas y configuradas correctamente:
PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys - Guarda los cambios y reinicia el servicio SSH para aplicar la nueva configuración:
sudo systemctl restart sshosudo systemctl restart sshd.