Cómo Solucionar el Error Permission Denied (publickey) en SSH en Linux Paso a Paso

Cómo Solucionar el Error Permission Denied (publickey) en SSH en Linux Paso a Paso
Anuncio relacionado

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_keys del 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.

  1. Abre tu terminal en la máquina local o cliente.
  2. Ejecuta el siguiente comando para corregir los permisos del directorio .ssh: chmod 700 ~/.ssh
  3. Asegúrate de que los permisos de tu clave privada sean correctos ejecutando: chmod 600 ~/.ssh/id_rsa (reemplaza id_rsa por el nombre de tu archivo de clave).
  4. 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.

  1. Si tienes acceso temporal mediante contraseña, utiliza la herramienta ssh-copy-id desde tu máquina local: ssh-copy-id usuario@tu_servidor_remoto
  2. Si no tienes acceso por contraseña, accede físicamente o mediante la consola de tu proveedor VPS, abre el archivo ~/.ssh/authorized_keys y pega el contenido exacto de tu clave pública local (id_rsa.pub).
  3. Asegúrate de que el archivo authorized_keys en 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.

  1. 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
  2. Busca las siguientes líneas y asegúrate de que estén descomentadas y configuradas correctamente: PubkeyAuthentication yes y AuthorizedKeysFile .ssh/authorized_keys
  3. Guarda los cambios y reinicia el servicio SSH para aplicar la nueva configuración ejecutando: sudo systemctl restart ssh o sudo systemctl restart sshd
Anuncio
Seguir Leyendo

Guías y Soluciones Relacionadas

Windows Apps Juegos
Linux

Cómo Solucionar el Error de Resolución DNS en /etc/resolv.conf en Linux

¿Tus aplicaciones en Linux no tienen internet por fallos de DNS? Descubre cómo solucionar el problema de sobrescritura en el archivo resolv.conf.

Leer guía completa →
PrestaShop

Cómo Solucionar el Error 500 en PrestaShop de Forma Definitiva

¿Tu tienda PrestaShop muestra el temido Error 500 y no sabes qué hacer? Descubre cómo identificar el origen del fallo y aplicar la solución definitiva.

Leer guía completa →
PrestaShop

Cómo Solucionar el Error 500 en PrestaShop de Forma Definitiva

El error 500 en PrestaShop bloquea tu tienda online sin mostrar detalles. Aprende a diagnosticarlo y solucionarlo definitivamente.

Leer guía completa →