Introducción al Error Permission Denied (publickey) en SSH
El protocolo SSH (Secure Shell) es la herramienta fundamental para administrar servidores Linux de forma remota. Sin embargo, uno de los problemas más frustrantes que enfrentan los administradores de sistemas y desarrolladores es encontrarse con el mensaje de error Permission denied (publickey) al intentar establecer una conexión. Este fallo indica que el servidor ha rechazado las credenciales presentadas por el cliente, impidiendo el acceso.
Causas Principales del Fallo de Autenticación SSH
Para solucionar este problema de manera efectiva, es necesario comprender por qué ocurre. Las causas más comunes en entornos Linux incluyen:
- Ausencia de la clave pública del cliente en el archivo
authorized_keysdel servidor. - Permisos incorrectos en el directorio
.ssho en los archivos de claves (tanto en el cliente como en el servidor). - El servicio SSH en el servidor tiene deshabilitada la autenticación por clave pública.
- El agente SSH no está cargando la clave privada correcta.
Método 1: Verificar y Corregir los Permisos de Archivos y Directorios
Linux es extremadamente estricto con los permisos de seguridad para las claves SSH. Si los permisos son demasiado abiertos, el demonio SSH los rechazará por seguridad.
- Abre la terminal en tu máquina cliente.
- Ejecuta el siguiente comando para asegurar los permisos de tu carpeta
.ssh:chmod 700 ~/.ssh - Corrige los permisos de tu clave privada (por ejemplo, id_rsa):
chmod 600 ~/.ssh/id_rsa - Si tienes acceso físico o por consola de emergencia al servidor remoto, verifica los permisos allí también:
chmod 700 ~/.sshychmod 600 ~/.ssh/authorized_keys
Método 2: Copiar Correctamente la Clave Pública al Servidor
A menudo, el error ocurre porque la clave pública no se copió en la ubicación exacta o carece del formato adecuado.
- Si tienes la contraseña temporal del usuario, utiliza la utilidad
ssh-copy-iddesde tu máquina local:ssh-copy-id usuario@tu_servidor_ip - Si el método anterior no funciona, visualiza tu clave pública local con:
cat ~/.ssh/id_rsa.pub - Conéctate al servidor por otro medio, abre el archivo
~/.ssh/authorized_keyscon un editor como nano y pega la línea de tu clave pública al final del archivo, guarda y cierra.
Método 3: Comprobar la Configuración del Servidor SSH (sshd_config)
Si los permisos y las claves son correctos, es posible que la configuración del demonio SSH en el servidor esté bloqueando el acceso.
- Accede al servidor y edita el archivo de configuración con privilegios de superusuario:
sudo nano /etc/ssh/sshd_config - Busca las siguientes directivas y asegúrate de que estén descomentadas y configuradas de esta forma:
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