Cómo crear un llave SSH para GitHub

¿Qué es ssh?
Ssh (secure shell) es un protocolo de acceso seguro y cifrado para conectarnos a servidores remotos, transferir archivos, acceso a sistemas operativos y para la gestión de redes, etc.
¿Cómo funciona?
Este mecanismo de seguridad a grandes rasgos utiliza dos tipos de llaves, una pública y una privada. La llave pública es la que vamos a enviar al servidor a donde nos queremos conectar y la privada es la que va a permanecer en nuestros equipos — Nunca se debe compartir la llave privada y tampoco usar el mismo par de llaves en diferentes dispositivos — . Cuando enviamos la llave pública al servidor al cual queremos conectarnos el nos enviará su propia llave pública que se almacenará en nuestro equipo, así podemos comunicarnos de manera bidireccional, entre nuestra PC y el servidor
La comunicación es encriptada con este protocolo.

¿Por qué utilizarlo para GitHub?
Este método es uno de los más seguros para la transferencia de archivos a través de internet y a la vez es la más simple porqué cada vez que queremos realizar un “push” nos va a solicitar la contraseña.
¿Qué necesito tener en cuenta?
El correo electrónico con el que hiciste la cuenta en GitHub y una contraseña.
Desde la terminal de Linux podemos crear la llave y en Windows debemos instalar Git y usar su terminal bash.

Crear llave ssh
1 — Abrimos la terminal bash si estamos en Windows y si estamos en Linux abrimos la terminal. Seguimos estos pasos.
2 — Nos posicionamos en la raíz de nuestro directorio y escribimos lo siguiente es importante respetar las mayúsculas y minúsculas:
$ ssh-keygen -t rsa -b 4096 -C "micorreodegithub@micorreo.com"
3 — Va a aparecer el siguiente mensaje y lo único que tenemos que hacer es darle “enter” cuando te pregunte en que carpeta queres guardar las llaves, en mi opinión la ruta que te recomienda es la mejor.
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/username/.ssh/id_rsa):
Se crear nuestra llave en el directorio indicado.
created directory '/c/Users/username/.ssh/id_rsa'
4— Nos va a solicitar que ingresemos una contraseña que aquí lo llama “passphrase”. Si presionas “enter” sin escribir la contraseña, la llave se generará igual.
passphrase: Es una forma de decir que la clave puede ser una frase, es decir que admite espacios.
Enter passphrase (empty for no passphrase):
Vuelva a ingresar la contraseña.
Enter same passphrase again:
Recomiendo usar contraseña a la hora de crear una llave ssh y tiene que ser lo más robusta posible. Para crear una contraseña robusta lo que hago es pensar en una frase corta y fácil de recordar — No tiene que ser obvia — y en la misma combino mayúsculas, minúsculas, números y caracteres especiales.
Cuando se haya creado la llave ssh le va a aparecer lo siguiente y una imagen hecha con símbolos.
Your identification has been saved in /c/Users/username/.ssh/id_rsa.
Your public key has been saved in /c/Users/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:NissAInKjHkHj2DF52we2s2dDGF5EFjjkes6 micorreodegithub@micorreo.com
The key's randomart image is:
+---[RSA 4096]---+
|+.+.65.+O |
|6R 06G+*0 RG |
|+.+YU+.+,8+. |
|-*+6U+8+7 |
|+.5+J+5+U5 |
|+MU65 .+.+ |
|+ 5YI7 |
|+*- |
|J7575++/+.. |
+---[SHA256]-----+
Encender el server ssh y agregar la llave.
Ahora que creamos nuestra llave ssh, debemos agregarla al entorno — Con esto le decimos al sistema operativo que existe una llave y que cada vez que queramos acceder a GitHub la utilice-.
5 — Vamos a encender el servidor ssh para agregar la llave previamente creada. Escribimos el siguiente comando.
eval $(ssh-agent -s)
Si el servidor ssh se encendió va aparecer el siguiente mensaje.
El número que aparece puede variar porque depende la cantidad de procesos que estén corriendo en tu equipo, lo importante es que aparezca el “Agent pid <número del proceso>”
Agent pid 4725
6 — Agregamos la llave con el siguiente comando
ssh-add ~/.ssh/id_rsa
Si se agregó correctamente la llave aparecerá el siguiente mensajes.
Identity added: /c/Users/username/.ssh/id_rsa (micorreodegithub@micorreo.com)
Agregar nuestra llave publica a GitHub
Para agregar nuestra llave publica vamos a utilizar el archivo “ida_rsa.pub” que si seguiste estos pasos lo deberás encontrar en la siguiente rutas.
Para Windows:
Esta en ruta c:\users\username\.ssh

Nota: Cada vez que pongo “username” me voy a estar refiriendo al nombre de la sesión en el equipo y puede varias según el nombre con el que se creo la cuenta en Windows.
Nota: Las carpetas que empecen con un punto “.” al principio del nombre, significa que esa carpeta normalmente está oculta como en el caso de la carpeta “.ssh”
7a — Vamos a abrirlo con visual Studio code el archivo “id_rsa.pub” y copiamos todo el texto.

Para Linux:
En la misma terminal escribimos el siguiente comando.
cd /home/username/.ssh/
Una vez que estemos en esta carpeta presionamos el siguiente comando para observar que archivos tiene la carpeta .shh
ls
Tenemos que observar que estén los siguientes archivos (pueden aparecer más archivos pero no son importante en este caso).
id_rsa id_rsa.pub
Aquí lo que nos interesa es “id_rsa.pub” y para ver su contenido tipiamos el siguiente comando y aparecerá textos.
cat id_rsa.pub

7b — Copiamos el texto para luego ir a GitHub.
Tenemos que tener cuidado con las espacios que se puedan generar por error al final del texto copiado.
Ingresando a GitHub para agregar la llave
8 — Entramos a GitHub con nuestro usuario y contraseña sino tenemos nos creamos una cuenta.

9 — Una vez allí, en la parte superior derecha, donde nuestro avatar presionamos y vamos a “Settings”.

10 — En la parte izquierda de la pantalla, tenemos una barra vertical con opciones, buscamos “SSH and GPG keys” y presionamos esa opción.

11 — Vamos a encontrar un botón que diga “New SSH key”, lo presionamos.


Title: Recomiendo poner el nombre o un título con el que puedas identificar la PC donde se creó esa llave.
Key type: dejamos la configuración por defecto, No tocamos nada.
Key: pegamos la llave publica, que copiamos en el punto 7a o 7b.
12 — presionamos “Add SSH key” y si todo esta bien te llevará a la página donde están todas las llaves SSH agregadas.
Con esto tendremos una relación de confianza entre GitHub y nuestro equipo volviéndose más fácil subir proyectos y bajarlos.
Espero que te haya servido este tutorial para que puedas sacarle el máximo provecho a Git y GitHub. ¡Saludos!
Las imágenes son ilustrativas.