Introducción al error Permission denied (publickey) en SSH
Uno de los problemas más frustrantes al administrar servidores remotos basados en Linux es encontrarse con el mensaje de error Permission denied (publickey) al intentar conectarse mediante SSH. Este fallo indica que el servidor ha rechazado tus credenciales porque no reconoce o no tiene autorizada la clave pública que estás utilizando para autenticarte.
Causas principales del fallo de autenticación SSH
El error de permisos en SSH suele estar provocado por una de las siguientes razones comunes:
- Permisos incorrectos en el directorio
~/.ssho en el archivoauthorized_keysdel servidor remoto. - La clave privada correcta no está cargada en el agente SSH de tu máquina local.
- El archivo de configuración del servidor SSH (
sshd_config) tiene deshabilitada la autenticación por clave pública. - Estás intentando conectar con el usuario incorrecto o la clave pública no se copió adecuadamente al servidor.
Método 1: Verificar y corregir los permisos en el servidor remoto
Linux es extremadamente estricto con los permisos de seguridad de las claves SSH. Si los permisos son demasiado abiertos, el servidor rechazará la conexión por motivos de seguridad.
- Accede a tu servidor mediante la consola de recuperación o un método alternativo.
- Ejecuta el siguiente comando para asegurar que tu carpeta personal tenga los permisos correctos:
chmod 700 ~/.ssh - Ajusta los permisos del archivo de claves autorizadas con:
chmod 600 ~/.ssh/authorized_keys - Verifica que el propietario del directorio sea el usuario correcto usando:
chown -R $USER:$USER ~/.ssh
Método 2: Comprobar y añadir la clave privada al agente SSH
A veces el problema no está en el servidor, sino en que tu equipo local no está enviando la clave adecuada durante el establecimiento de la conexión.
- Inicia el agente SSH en tu terminal local ejecutando:
eval "$(ssh-agent -s)" - Añade tu clave privada predeterminada con el comando:
ssh-add ~/.ssh/id_rsa(o la ruta correspondiente a tu clave). - Verifica que la clave se haya añadido correctamente listándola con:
ssh-add -l
Método 3: Revisar la configuración del servicio SSH (sshd_config)
Si los pasos anteriores no funcionan, es posible que el demonio SSH en el servidor no permita este tipo de acceso.
- Abre el archivo de configuración con privilegios de superusuario:
sudo nano /etc/ssh/sshd_config - Busca las directivas
PubkeyAuthenticationyAuthorizedKeysFile, y asegúrate de que estén descomentadas y configuradas comoyes. - Guarda los cambios y reinicia el servicio SSH ejecutando:
sudo systemctl restart sshd