Introducción al Error Permission Denied en SSH
Uno de los problemas más frustrantes para los administradores de sistemas y desarrolladores que utilizan Linux es encontrarse con el temido mensaje Permission denied (publickey) al intentar conectarse a un servidor remoto mediante SSH. Este error indica que el servidor ha rechazado tus credenciales de autenticación, impidiendo el acceso a la terminal.
Causas Principales del Error SSH Publickey
Existen diversos motivos por los cuales Linux bloquea tu acceso SSH. Las causas más comunes incluyen:
- Permisos incorrectos en el directorio
~/.ssho en el archivoauthorized_keys. - La clave pública no ha sido copiada correctamente en el servidor remoto.
- El servicio SSH en el servidor no permite la autenticación por clave pública.
- Estás intentando autenticarte con el usuario incorrecto.
Método 1: Corregir los Permisos de Archivos y Directorios SSH
El servidor SSH de Linux es extremadamente estricto con la seguridad. Si los permisos de tus carpetas o archivos de configuración son demasiado abiertos, la conexión será rechazada automáticamente.
- Accede a tu servidor utilizando otro método de entrada (como la consola de recuperacion de tu proveedor VPS).
- Ejecuta el siguiente comando para asegurar que la carpeta
.sshtiene los permisos correctos (700):chmod 700 ~/.ssh - Establece los permisos correctos (600) para el archivo de claves autorizadas:
chmod 600 ~/.ssh/authorized_keys - Asegúrate de que el usuario propietario sea el correcto:
chown -R $USER:$USER ~/.ssh
Método 2: Verificar la Configuración del Servidor SSH (sshd_config)
Si los permisos son correctos, es posible que el archivo de configuración del demonio SSH en el servidor esté bloqueando el acceso por claves.
- 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 de esta manera:
PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys - Guarda los cambios y reinicia el servicio SSH para aplicar la nueva configuración:
sudo systemctl restart sshosudo systemctl restart sshd
Método 3: Depurar la Conexión con Modo Verbose
Si el problema persiste, necesitas ver exactamente qué está fallando durante el intercambio de claves. Utiliza el modo de depuración desde tu máquina local:
- Ejecuta el comando SSH añadiendo la opción
-v(o hasta-vvvpara máxima información):ssh -v usuario@tu-servidor-ip - Revisa la salida en pantalla para identificar si el cliente está enviando la clave correcta y qué error exacto devuelve el servidor en el proceso de autenticación.