Introducción al Error Permission Denied (publickey) en Linux
Uno de los dolores de cabeza más comunes para los administradores de sistemas y desarrolladores que trabajan con servidores Linux es encontrarse con el frustrante mensaje Permission denied (publickey) al intentar conectarse mediante SSH. Este error indica que el servidor ha rechazado tus credenciales porque la llave pública que estás utilizando no está autorizada o los permisos de los archivos de configuración son incorrectos.
Causas Principales del Fallo de Autenticación SSH
El rechazo de la conexión suele deberse a varios factores habituales en entornos Linux:
- Permisos incorrectos en el directorio
.ssho en los archivos de claves autorizadas. - La llave pública no se ha copiado correctamente en el archivo
authorized_keysdel servidor remoto. - El servicio SSH en el servidor (sshd) tiene deshabilitada la autenticación por clave pública.
- Estás intentando autenticarte con un usuario incorrecto o la clave privada no se está cargando en el cliente local.
Método 1: Corregir los Permisos de los Archivos SSH (Causa más común)
Linux es extremadamente estricto con los permisos de seguridad. Si el directorio .ssh o el archivo authorized_keys tienen permisos de escritura para el grupo o otros usuarios, el servidor rechaza la conexión por seguridad.
- Accede al servidor utilizando otro método disponible o la consola de rescate de tu proveedor.
- Ejecuta el siguiente comando para corregir los permisos de la carpeta .ssh del usuario:
chmod 700 ~/.ssh - Ajusta los permisos del archivo de claves autorizadas con:
chmod 600 ~/.ssh/authorized_keys - Asegúrate de que el propietario sea correcto ejecutando:
chown -R $USER:$USER ~/.ssh
Método 2: Verificar y Copiar Correctamente la Clave Pública
Si la clave no está registrada en el servidor, el acceso será denegado de forma inmediata.
- En tu máquina local, genera una nueva clave si es necesario o visualiza la existente con:
cat ~/.ssh/id_rsa.pub - Copia el contenido y asegúrate de añadirlo en el archivo
~/.ssh/authorized_keysdentro del servidor remoto. - Una forma automatizada y recomendada desde tu equipo local es utilizar la herramienta ssh-copy-id:
ssh-copy-id usuario@tu_servidor_ip
Método 3: Revisar la Configuración del Servidor SSH (sshd_config)
A veces el problema radica en que el daemon de SSH tiene restricciones activas en el archivo de configuración global.
- Abre el archivo de configuración del servidor con privilegios de superusuario:
sudo nano /etc/ssh/sshd_config - Busca y verifica que las siguientes directivas estén habilitadas (descomentadas eliminando el símbolo #):
PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys - Guarda los cambios y reinicia el servicio SSH para aplicar la nueva configuración ejecutando:
sudo systemctl restart sshosudo systemctl restart sshd