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 encontrarse con el mensaje Permission denied (publickey) al intentar conectarse a un servidor remoto mediante SSH. Este error interrumpe por completo el flujo de trabajo, impidiendo el acceso administrativo o la ejecución de despliegues automatizados.
Causas Principales del Error SSH
El protocolo SSH utiliza autenticación basada en claves criptográficas por razones de seguridad. Cuando aparece este fallo, generalmente se debe a una de las siguientes razones:
- Los permisos de los archivos y directorios de la clave SSH son demasiado abiertos.
- La clave pública no está correctamente registrada en el archivo
authorized_keysdel servidor remoto. - El servicio SSH en el servidor no permite la autenticación por clave pública.
- Estás intentando autenticarte con la clave privada incorrecta o el agente SSH no la tiene cargada.
Método 1: Corregir los Permisos de Archivos y Directorios SSH
Linux es extremadamente estricto con los permisos de seguridad. Si la carpeta .ssh o los archivos de claves tienen permisos de escritura para otros usuarios, SSH rechazará la conexión por seguridad.
- Abre tu terminal en la máquina local o cliente.
- Ejecuta el siguiente comando para corregir los permisos del directorio
.ssh:chmod 700 ~/.ssh - Asegúrate de que los permisos de tu clave privada sean correctos ejecutando:
chmod 600 ~/.ssh/id_rsa(reemplazaid_rsapor el nombre de tu archivo de clave). - Si utilizas una clave pública, verifica sus permisos con:
chmod 644 ~/.ssh/id_rsa.pub
Método 2: Verificar y Copiar la Clave Pública al Servidor Remoto
Si la clave no está en el servidor de destino, la autenticación fallará inevitablemente. Debes asegurarte de transferirla correctamente.
- Si tienes acceso temporal mediante contraseña, utiliza la herramienta
ssh-copy-iddesde tu máquina local:ssh-copy-id usuario@tu_servidor_remoto - Si no tienes acceso por contraseña, accede físicamente o mediante la consola de tu proveedor VPS, abre el archivo
~/.ssh/authorized_keysy pega el contenido exacto de tu clave pública local (id_rsa.pub). - Asegúrate de que el archivo
authorized_keysen el servidor también tenga los permisos estrictos correctos:chmod 600 ~/.ssh/authorized_keys
Método 3: Comprobar la Configuración del Servidor SSH (sshd_config)
A veces el problema radica en las directivas de configuración del demonio SSH en el servidor remoto.
- Accede al servidor remoto e ingresa al archivo de configuración con un editor de texto 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 yesyAuthorizedKeysFile .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