Cómo añadir una clave SSH a GitHub

Genera una clave con ssh-keygen -t ed25519 -C "you@example.com" y copia el contenido de ~/.ssh/id_ed25519.pub. En GitHub, abre Settings, SSH and GPG keys, New SSH key, pégala y guarda. Prueba con ssh -T git@github.com: si funciona, dice Hi USERNAME! You've successfully authenticated.

Actualizada el . Huellas de las claves de host de GitHub comparadas el 2026-11-14 con las que ssh-keyscan recibió de github.com.

Generar una clave

Sáltate esto si ya tienes una, lo que puedes ver con ls ~/.ssh/*.pub.

ssh-keygen -t ed25519 -C "you@example.com"

Acepta el archivo por defecto y pon una frase de contraseña. En Windows, mira generar una clave en Windows.

¿No sabes qué tipo elegir? Consulta claves SSH RSA o ed25519.

Copiar la clave pública

pbcopy < ~/.ssh/id_ed25519.pub     # macOS
cat ~/.ssh/id_ed25519.pub          # Linux: copy the output by hand

En Windows, usa Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard. Es una sola línea que empieza por ssh-ed25519. Si lo que tienes empieza por -----BEGIN, es la clave privada: detente y no la pegues en ningún sitio.

Añadirla en GitHub

  1. Haz clic en tu foto de perfil, arriba a la derecha, y luego en Settings.
  2. En la sección Access de la barra lateral, haz clic en SSH and GPG keys.
  3. Haz clic en New SSH key.
  4. Ponle un título que nombre el equipo, como "Portátil personal".
  5. Elige el tipo de clave Authentication. Signing es un uso distinto: para firmar commits con la misma clave, súbela una segunda vez como Signing.
  6. Pega la clave sin añadir saltos de línea y haz clic en Add SSH key.

Con la herramienta de línea de comandos de GitHub, tras gh auth login:

gh ssh-key add ~/.ssh/id_ed25519.pub --title "Personal laptop"

GitHub ya no acepta claves DSA. Si una organización a la que perteneces usa inicio de sesión único SAML, puede que también tengas que autorizar la clave para ella en la misma página.

Probarla y comprobar la huella

ssh -T git@github.com

La primera vez, ssh pregunta si confías en el host. Compara lo que muestra con la lista que publica GitHub. Comprobamos que estos valores coinciden con lo que envía github.com:

TipoHuella SHA256
Ed25519SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU
ECDSASHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM
RSASHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s

GitHub puede cambiarlas, así que su propia página es la referencia. Un acceso correcto imprime:

Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.

Si en cambio obtienes un error, mira git@github.com: Permission denied (publickey).

Por qué ssh pregunta la primera vez y cómo leer la pregunta: known_hosts y huellas del host explicados.

Haz que tu repositorio use SSH

Una clave no sirve de nada para un repositorio clonado por HTTPS. Compruébalo y cámbialo si hace falta:

git remote -v
git remote set-url origin git@github.com:OWNER/REPO.git

Para un clon nuevo, usa la misma forma de dirección:

git clone git@github.com:OWNER/REPO.git

Si Git pide la frase de contraseña o usa la clave equivocada

Carga la clave en ssh-agent una vez por sesión con ssh-add ~/.ssh/id_ed25519. En Mac, el Llavero puede guardar la frase tras un reinicio: consulta ssh-agent y el Llavero de macOS.

Si tu clave tiene otro nombre, indica a ssh cuál usar para GitHub en ~/.ssh/config:

Host github.com
    IdentityFile ~/.ssh/id_ed25519_github
    IdentitiesOnly yes

Para una segunda cuenta de GitHub en el mismo equipo, consulta varias cuentas de GitHub con SSH.

Si el puerto 22 está bloqueado

Algunas redes lo bloquean, lo que se manifiesta como un timeout. GitHub también acepta SSH en el puerto 443:

ssh -T -p 443 git@ssh.github.com

Si funciona, hazlo permanente en ~/.ssh/config:

Host github.com
    Hostname ssh.github.com
    Port 443
    User git

Preguntas

¿Por qué ssh -T git@github.com termina con un código de error?

Termina con el código 1 incluso si funciona, porque GitHub no ofrece shell. Lo que cuenta es el mensaje Hi USERNAME.

¿Puedo usar la misma clave en dos cuentas de GitHub?

No. GitHub identifica tu cuenta por la clave, y rechaza una clave ya en uso con Key already in use. Mira la guía sobre varias cuentas de GitHub.

¿Por qué Git me pide la frase de contraseña SSH en cada push?

Porque la clave no está cargada en ssh-agent. Ejecuta ssh-add ~/.ssh/id_ed25519 una vez por sesión. En Mac, ssh-add --apple-use-keychain también guarda la frase en el Llavero.

Fuentes

Más en Claves y acceso

Todas las guías