Introducción al Error Permission Denied (publickey) en SSH
Uno de los problemas más frustrantes para los administradores de sistemas y desarrolladores que utilizan Linux es intentar conectarse a un servidor remoto mediante SSH y recibir el temido mensaje: Permission denied (publickey). Este error ocurre cuando el servidor rechaza la clave pública proporcionada por tu cliente o cuando los permisos de los archivos de autenticación no son los correctos.
Causas Principales del Error SSH en Linux
El fallo de autenticación por clave pública en SSH suele estar provocado por diversos motivos comunes en entornos Linux:
- Permisos incorrectos en el directorio
~/.ssho en el archivoauthorized_keys. - La clave pública no ha sido copiada correctamente en el servidor de destino.
- El servicio SSH en el servidor (sshd) tiene deshabilitada la autenticación por clave pública en el archivo de configuración.
- Estás intentando utilizar una clave privada que no está cargada en el agente SSH.
Método 1: Corregir los Permisos de Archivos y Directorios SSH
El demonio SSH en Linux es extremadamente estricto con la seguridad. Si los permisos de tus carpetas de configuración son demasiado abiertos (por ejemplo, accesibles para el grupo o otros usuarios), la conexión será denegada automáticamente.
- Abre tu terminal local y conéctate o accede a tu servidor si tienes otro medio de entrada.
- Ejecuta el siguiente comando para ajustar los permisos del directorio .ssh a 700:
chmod 700 ~/.ssh - Asegúrate de que el archivo de claves autorizadas tenga permisos 600:
chmod 600 ~/.ssh/authorized_keys - Verifica que el propietario de estos archivos sea tu usuario actual utilizando el comando:
chown -R $USER:$USER ~/.ssh
Método 2: Verificar y Añadir la Clave Pública al Servidor
Si la clave no se encuentra registrada en el archivo authorized_keys del servidor, la autenticación fallará de inmediato.
- Desde tu máquina local, genera o visualiza tu clave pública con:
cat ~/.ssh/id_rsa.pub - Copia el contenido y asegúrate de agregarlo manualmente dentro del archivo
~/.ssh/authorized_keysen el servidor remoto. - Alternativamente, utiliza la herramienta automatizada
ssh-copy-iddesde tu equipo local indicando tu usuario y la IP del servidor:ssh-copy-id usuario@tu_servidor_ip
Método 3: Comprobar la Configuración del Servidor SSH (sshd_config)
A veces el problema radica en el propio servicio de OpenSSH corriendo en el servidor Linux.
- Accede al servidor con privilegios de superusuario y abre el archivo de configuración con tu editor favorito:
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