git / Guías

Git SSH: resolver Permission denied (publickey)

Este error indica que el servidor SSH rechazó la autenticación. Los ejemplos usan github.com; otros proveedores y servidores empresariales pueden necesitar ajustes distintos.

Los ejemplos usan Bash; consulta las referencias para los detalles de tu entorno.

Comprueba el remoto y el protocolo

Ejecuta el comando dentro del repositorio. Un remoto HTTPS utiliza credenciales HTTPS; corregir una clave SSH no cambia esa conexión. Una URL SSH de GitHub suele empezar por git@github.com:.

git remote -v

En github.com el usuario SSH es git, no tu nombre de cuenta. Revisa el propietario y el nombre del repositorio antes de cambiar el remoto. Cambiar el protocolo puede ocultar el problema original.

Comprueba las claves del agente

Lista las identidades disponibles en el agente SSH de la sesión. No tener identidades es distinto de no poder contactar con el agente. La configuración depende del sistema operativo y del terminal.

ssh-add -l

Si tu clave existente no está cargada, añade su ruta real, por ejemplo ssh-add ~/.ssh/id_ed25519. Registra la clave pública .pub correspondiente en la cuenta GitHub correcta. Conserva la clave privada en tu dispositivo; no la pegues en un sitio web.

Prueba la autenticación con GitHub

Antes de aceptar una clave nueva del servidor, compara su huella con las huellas SSH publicadas por GitHub, enlazadas desde la guía oficial de abajo. Después ejecuta la prueba.

ssh -T git@github.com

El mensaje de éxito GitHub identifica tu cuenta e indica que no ofrece acceso shell. Esa prueba correcta suele terminar con código 1. Si sigue fallando, ssh -vT git@github.com muestra las identidades ofrecidas. Usar Git con sudo puede seleccionar las claves de otro usuario.

Distingue autenticación y acceso al repositorio

Tras una prueba SSH correcta, comprueba la lectura del repositorio. Este comando lista referencias remotas sin cambiar ramas locales.

git ls-remote origin

La cuenta autenticada también necesita acceso al repositorio. Revisa la URL, la pertenencia a la organización y la autorización SSO que corresponda. Una deploy key puede estar limitada a un repositorio. Si no existe ninguna clave, sigue la configuración del proveedor sin sobrescribir una existente.

Referencias

Todas las guías