Cómo solucionar el error Permission Denied (publickey) en conexiones SSH
El error Permission denied (publickey) al intentar conectarte a un servidor remoto mediante SSH ocurre porque el demonio SSH (sshd) en el servidor remoto rechaza la clave privada presentada por tu cliente. Esto se debe habitualmente a permisos de archivos demasiado permisivos, lo cual invalida la seguridad de la conexión y obliga al servidor a descartar el intento por protección.
El Diagnóstico Rápido
chmod 600 ~/.ssh/id_rsassh-copy-id usuario@servidorEl error Permission denied (publickey) al intentar conectarte a un servidor remoto mediante SSH ocurre porque el demonio SSH (sshd) en el servidor remoto rechaza la clave privada presentada por tu cliente. Esto se debe habitualmente a permisos de archivos demasiado permisivos, lo cual invalida la seguridad de la conexión y obliga al servidor a descartar el intento por protección.
La Solución Paso a Paso
-
1
Paso 1: Corregir los permisos de tu clave privada en el cliente
La clave privada nunca debe ser legible por otros usuarios de la máquina local. Ajusta los permisos del archivo
.pemoid_rsa:BASH# Cambiar permisos para que solo el propietario pueda leer el archivo chmod 600 ~/.ssh/id_rsa -
2
Paso 2: Ajustar los permisos del directorio .ssh y autorizaciones en el servidor
Accede a la consola del servidor (a través de TTY o consola del proveedor de hosting) y ejecuta las siguientes correcciones sobre tu directorio de inicio:
BASH# Asegurar el directorio de configuración de SSH chmod 700 ~/.ssh # Asegurar el archivo que almacena las claves autorizadas chmod 600 ~/.ssh/authorized_keys # Restablecer la propiedad de los archivos a tu usuario actual chown -R $USER:$USER ~/.ssh -
3
Paso 3: Comprobar la directiva de autenticación en el servidor
Si el error persiste, edita el archivo de configuración del servicio SSH en el servidor
/etc/ssh/sshd_configy verifica que la autenticación por clave pública esté habilitada:PLAINTEXTPubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keysReinicia el servicio para aplicar los cambios:
BASHsudo systemctl restart sshd
Consejo de Prevención
Prácticas de seguridad recomendadas:
- Evita compartir tu clave privada a través de medios inseguros o utilizar permisos laxos en el host local. Mantén siempre el principio de mínimos privilegios en tu configuración SSH. Configurar la directiva
StrictModes yesen el servidor obliga a SSHD a rechazar conexiones de forma proactiva si los permisos de la carpeta personal o archivos autorizados son inseguros, previniendo intrusiones accidentales por descuidos en el sistema de archivos.