SSH (Secure Shell) permite acceder a servidores y comunicarte con GitHub mediante una conexión cifrada, sin escribir usuario y contraseña en cada git push. En esta guía creas una clave SSH en Windows, la registras en GitHub y pruebas la conexión. Si todavía no instalaste ni configuraste Git, empieza por el artículo anterior.
Cómo funciona, en una frase
Generas un par de claves: la privada, que queda solo en tu computadora, y la pública, que le entregas a GitHub. Quien tiene la pública puede comprobar que tú tienes la privada, sin que esta salga jamás de tu máquina.
Atención: la clave que va a GitHub es siempre la de extensión
.pub. El archivo sin extensión es la clave privada: nunca copies, envíes ni publiques su contenido.
1. Genera la clave
Abre Git Bash (o PowerShell) y escribe:
ssh-keygen -t ed25519 -C "tucorreo@ejemplo.com"
-t ed25519elige el algoritmo recomendado actualmente: las claves son más pequeñas y rápidas que las RSA, que eran el estándar en guías antiguas.-Ces solo un comentario para reconocer la clave más adelante. El correo es una buena opción.
El comando hace dos preguntas:
- Dónde guardarla: presiona Enter para aceptar el valor por defecto (
C:\Users\TuUsuario\.ssh\id_ed25519). - Passphrase: una contraseña que protege la clave. Te recomiendo definir una: si alguien copia el archivo, no le sirve sin la contraseña. Para no escribirla a cada rato, usa el paso siguiente.
Al final, la carpeta .ssh tendrá dos archivos: id_ed25519 (privada) y id_ed25519.pub (pública).
Si tu guía o sistema todavía exige RSA, usa
ssh-keygen -t rsa -b 4096 -C "tucorreo@ejemplo.com". Los archivos se llamaránid_rsaeid_rsa.pub.
2. Carga la clave en ssh-agent
ssh-agent guarda la clave desbloqueada en memoria, así escribes la passphrase una sola vez por sesión. En Windows viene desactivado. Abre PowerShell como administrador y ejecuta:
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
Después, en una terminal común, agrega la clave:
ssh-add $env:USERPROFILE\.ssh\id_ed25519
3. Copia la clave pública
Muestra el contenido del archivo .pub y copia todo, de la primera a la última letra:
cat ~/.ssh/id_ed25519.pub
En PowerShell, el comando equivalente es Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub. Empieza con ssh-ed25519 y termina con tu comentario.
4. Registra la clave en GitHub
- En GitHub, haz clic en tu foto, en la esquina superior derecha, y elige Settings.
- En el menú lateral, abre SSH and GPG keys.
- Haz clic en New SSH key.
- En Title, escribe un nombre que identifique la computadora (por ejemplo, "Portátil personal").
- En Key type, deja Authentication Key y pega la clave pública en Key.
- Haz clic en Add SSH key. GitHub puede pedirte la contraseña para confirmar.
5. Prueba la conexión
ssh -T git@github.com
La primera vez, SSH pregunta si confías en el servidor y muestra una huella digital (fingerprint). Comprueba que coincida con la lista oficial de GitHub y responde yes.
Si todo está bien, verás algo como:
Hi tuusuario! You've successfully authenticated, but GitHub does not provide shell access.
Ese mensaje es el éxito esperado: GitHub reconoció tu clave, solo que no ofrece una terminal.
6. Descarga un repositorio
En GitHub, abre un repositorio tuyo, haz clic en Code, elige la pestaña SSH y copia la dirección, que tiene este formato:
git@github.com:tuusuario/nombre-del-repositorio.git
En la carpeta donde guardas tus proyectos, abre Git Bash y ejecuta:
git clone git@github.com:tuusuario/nombre-del-repositorio.git
Si el repositorio se descarga sin pedir la contraseña de la cuenta, la configuración está funcionando.
Si algo sale mal
Permission denied (publickey): GitHub no reconoció la clave. Comprueba que pegaste el contenido del archivo.pub(y no el de la privada), quessh-agentestá corriendo y que la clave fue agregada, conssh-add -l.ssh-adddice que el agente no está en ejecución: repite el paso 2 en un PowerShell como administrador.- Más de una clave: si tienes claves para otros servicios, usa un archivo
~/.ssh/configpara indicar cuál usar en cada host.
Buenas prácticas
- Usa una clave por computadora, para poder revocar solo la de un equipo perdido.
- Define una passphrase y mantén el ssh-agent.
- Nunca versiones, envíes ni pegues la clave privada en ningún lugar.
- Revisa de vez en cuando las claves en Settings → SSH and GPG keys y elimina las que ya no uses.