Configurar llaves SSH
Si trabajas con GitHub y deseas interactuar con los repositorios de forma frecuente desde tu computador, usar una clave SSH es una opción segura y conveniente de autenticarte y comunicarte con tus repositorios en GitHub. Con SSH, tu conexión está cifrada y no necesitas escribir tus credenciales cada vez.
Agregar una clave SSH nueva a tu cuenta de GitHub
Vamos a seguir algunos sencillos pasos para agregar una clave SSH a tu cuenta de GitHub usando la línea de comandos.
Comprobar tus SSH existentes
Antes de generar una clave SSH, verifica si ya tienes una clave SSH existente. Abre una terminal o Git Bash y ejecuta:
1ls -al ~/.sshBusca archivos de claves públicas como
id_rsa.puboid_ecdsa.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), usaremos 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 una terminal con Ctrl + T y pega 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 solicitará 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
Agregamos la llave privada al agente SSH. Si la creaste con otro nombre, asegúrate de indicar su ruta; si usaste los valores predeterminados, simplemente copia el siguiente comando:
1
ssh-add ~/.ssh/id_rsa1
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.pub1
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
titleagrega una etiqueta descriptiva para la clave nueva. - En el campo
Keypega 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 de un nombre de Host. Por ejemplo:
1
ssh github
La línea anterior se traduce internamente:
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!
