¿Qué es el 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 mediante el protocolo SSH en sistemas operativos Linux como Ubuntu, Debian o CentOS. Este fallo indica que el servidor ha rechazado la autenticación basada en claves SSH, impidiendo que establezcas una conexión segura.
Principales causas del error de clave pública en SSH
- Permisos incorrectos en el directorio
.ssho en los archivos de claves. - La clave pública local no está registrada en el archivo
authorized_keysdel servidor remoto. - El cliente SSH está intentando usar una clave incorrecta o el agente SSH no la tiene cargada.
- Configuración restrictiva en el archivo
sshd_configdel servidor.
Método 1: Corregir los permisos de los archivos y directorios SSH
Una de las causas más frecuentes son los permisos demasiado abiertos en el directorio .ssh. Para solucionarlo, debes acceder físicamente a tu servidor (o mediante otra vía de rescate) y ejecutar los siguientes comandos en la terminal:
chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keyschmod 644 ~/.ssh/id_rsa.pub(si aplica)chmod 600 ~/.ssh/id_rsa(para tu clave privada en el equipo cliente)
Método 2: Verificar y añadir la clave pública al servidor remoto
Si la clave no está correctamente copiada en el servidor, la autenticación fallará. Desde tu máquina local, puedes copiar tu clave pública de forma automática utilizando el comando ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@tu_servidor_ip
Si este comando también falla por falta de acceso, tendrás que iniciar sesión en tu servidor mediante la consola de tu proveedor de hosting y añadir manualmente el contenido de tu archivo id_rsa.pub dentro del archivo ~/.ssh/authorized_keys del usuario correspondiente.
Método 3: Comprobar la configuración del servicio SSH (sshd_config)
En ocasiones, la configuración del demonio SSH en el servidor bloquea las conexiones por clave pública. Sigue estos pasos para revisarlo:
- 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 yesPasswordAuthentication yes(temporalmente para depurar)- Guarda los cambios y reinicia el servicio SSH con el comando:
sudo systemctl restart sshosudo systemctl restart sshd.