GitHub: Configurar llaves SSH 🔑
Cuando estamos trabajando con GitHub y deseamos interactuar con los repositorios desde nuestra máquina de forma frecuente, utilizar una clave SSH es una opción segura y conveniente de autenticarte y comunicarte con tus repositorios en GitHub. SSH permite que tu conexión con GitHub sea cifrada y sin necesidad de ingresar tus credenciales.
Pasos para configurar una clave SSH en GitHub
Antes de seguir con los pasos, verifica si ya tienes una clave SSH existente. Abre una terminal o Git Bash y ejecuta:
1
ls -al ~/.ssh
Busca archivos como id_rsa
y id_rsa.pub
o id_ed1234
y id_ed1234.pub
. Si existen, puedes reutilizarlos. Si no, genera una nueva clave.
1. Generar una nueva clave SSH
Para generar un par de claves SSH (clave pública y privada), utilizaremos la herramienta de línea de comandos ssh-keygen
, incluida por defecto en sistemas Linux, macOS y disponible en Windows a través de Git Bash.
Comenzamos abriendo la terminal y pegando el siguiente comando (remplaza "user@mail.com"
por tu correo electrónico):
1
ssh-keygen -t rsa -b 4096 -C "user@mail.com"
-t rsa
: Especifica el tipo de clave (RSA es el más común).-b 4096
: Especifica que tan compleja es la llave (el tamaño 4096 bits se considera seguro).-C "user@mail.com
: Agrega un comentario con tu dirección de correo para identificar la clave.
Luego se nos pedirá donde almacenar la nueva llave, si se presiona Enter por lo general se almacena en el directorio del usuario en una subcarpeta oculta llamada .ssh
:
mcherrera@dev:~$ ssh-keygen -t rsa -b 4096 -C "contacto@mail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mcherrera/.ssh/id_rsa): Si deseas cambiar de ubicación, define aquí el PATH de destino
Enter passphrase (empty for no passphrase): Si la incluyes, cada vez que uses la clave privada para conectarte a un servidor, tendrás que ingresar esta frase de contraseña para descifrar la clave.
Enter same passphrase again:
Your identification has been saved in /home/mcherrera/.ssh/id_rsa
Your public key has been saved in /home/mcherrera/.ssh/id_rsa.pub
The key fingerprint is:
...
Selecciona la ubicación de tu preferencia o solo presiona Enter.
2. Agregar la clave privada al servicio de ssh-agent
El comando ssh-agent
es un programa auxiliar que realiza seguimiento de las claves de identidad del usuario y sus frases de contraseñas. A continuación, sigue las instrucciones para agregar
Verificar si el programa se está ejecutando:
1
eval $(ssh-agent -s)
Esto debería mostrar un PID (Process ID). Por ejemplo:
1
Agent pid 483833
Ahora agregamos la llave privada al agente ssh. Si creaste la llave con un nombre distinto, asegurate de apuntar hacia donde se encuentre la llave que creaste. Si dejaste los valores predeterminado basta con copiar el siguiente comando:
1
ssh-add ~/.ssh/id_rsa
1
ssh-add $env:USERPROFILE\.ssh\id_rsa
1
ssh-add %USERPROFILE%\.ssh\id_rsa
El comando anterior nos devolverá el siguiente mensaje:
1
Identity added: /<User>/.ssh/id_rsa (user@mail.com)
3. Registrar la clave pública en Github
Antes de registrar tu clave SSH pública en GitHub, necesitas copiar el contenido de la clave al portapapeles para luego pegarla fácilmente.
En Windows sigue con Git Bash, usa la herramienta clip
de Windows para copiar la clave pública al portapales, también tienes los comandos equivalente para hacerlo a través de PowerShell o la CMD:
1
clip < ~/.ssh/id_rsa.pub
1
Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub" | clip
1
type %USERPROFILE%\\.ssh\id_rsa.pub | clip
En sistemas Linux, puedes usar herramientas como xclip
. Asegúrate de instalarla:
1
sudo apt install xclip
Para copiar la clave, ejecuta el siguiente comando, ajustando la ruta según la ubicación de tu clave pública:
1
cat ~/.ssh/id_rsa.pub | xclip -selection clipboard
Una vez que tengamos la clave copiada en el portapapeles, el siguiente paso es registrarla en nuestra cuenta de GitHub. Para ello, sigue estos pasos:
- Vamos a nuestra cuenta en GitHub e iniciamos sesión.
- Dirigite a la configuración de llaves SSH y GPG
- Haz clic en el botón New SSH key.
- En el campo
title
agrega una etiqueta descriptiva para la clave nueva. - En el campo
Key
pega la clave que está contenida en el portapapeles con ctrl + v.
4. Probar la Conexión
Para verificar que todo funciona correctamente, comprobamos la conexión con GitHub mediante el siguiente comando:
1
ssh -T git@github.com
Si todo está configurado correctamente, deberías recibir un mensaje como el siguiente:
1
Hi <tu-usuario>! You've successfully authenticated, but GitHub does not provide shell access.
El resultado anterior confirma que tu clave SSH está bien configurada y puedes usarla para usar comandos como
git clone
,git pull
,git push
.
Consejos para mejorar la gestión de claves SSH
Usar claves SSH para autenticación es una práctica segura, pero con el tiempo puedes terminar con muchas claves, nombres confusos o errores al conectar. Aquí te dejo algunos consejos para mantenerlas ordenadas y bajo control desde Bash.
1. Guardar tus claves con nombres descriptivos
En lugar de usar el nombre predeterminado id_rsa
, nómbralas según el servicio o propósito:
1
2
3
~/.ssh/github_ed25519
~/.ssh/servidor_empresa_rsa
~/.ssh/aws_personal_key
2. Crear un archivo para facilitar conexiones
Crea el archivo ~/.ssh/config
para definir accesos rápidos por alias:
1
2
3
4
5
6
7
8
9
Host github
HostName github.com
User git
IdentityFile ~/.ssh/github_ed26520
Host empresa
HostName 192.168.1.100
User mcherreraa
IdentityFile ~/.ssh/servidor_empresa_rsa
Ahora, simplemente conectas con algún servidor a través del siguiente comando:
1
ssh github
La línea anterior se traduce internamente a algo así como:
1
ssh -i ~/.ssh/github_ed26520 git@github.com
Como resultado, debería mostrar en el caso de github un mensaje:
1
Hi <tu usuario>! You've successfully authenticated, but GitHub does not provide shell access.
3. Limpieza rápida de claves en uso
Para ver qué claves están activas, ejecuta el siguiente comando:
1
ssh-add -l
Para eliminar todas:
1
ssh-add -D
Configurar claves SSH en GitHub no solo mejora la seguridad, sino que también incrementa la productividad al evitar el ingreso constante de credenciales, facilitando el trabajo frecuente con repositorios.
Y eso es todo, ¡espero que este artículo haya sido de utilidad!