Cómo crear y vincular una llave SSH con GitHub
Tags: github, git, webdev, tutorial
Published: 2020-11-23 22:50:13

Crear una llave SSH no solo es la forma más rápida de trabajar con tus repositorios en GitHub, es también la forma más segura y recomendada en los entornos de desarrollo profesionales.

## ¿Que es una llave SSH?
Una llave SSH es una clave que te permitirá autenticarte ante un servicio, en este caso, GitHub. Por lo general vienen 2 llaves: una pública y una privada. Con la pública puedes enviar y recibir información cifrada de la web, mientras que con la privada puedes descifrar esa información para poder su contenido.

**Nota: NUNCA compartas tu llave privada.**

## Antes de crear la llave
Antes de crear la llave, primero debes verificar que no tienes las llaves ya creadas. ¿Cómo lo haces? Simple, ejecuta este comando:

`ls -al .ssh`

Por lo general tienen estos nombres:
- id_rsa.pub
- id_dsa.pub

Así que si te topas con uno de ellos, lo más probable es que ya tengas las llaves y solo debes vincular esa llave con GitHub.

![verificar si se tiene una llave SSH](https://dev-to-uploads.s3.amazonaws.com/i/h2w1pcus13vo4ltowtj4.png)
En este caso, no tengo llaves. Vamos a crearla.

## ¿Cómo crear un llave SSH?
Para crear una llave SSH, simplemente ejecuta este comando:

`ssh-keygen -t rsa -b 4069 -C "j@ejemplo.com"`

Recuerda poner tu correo electrónico.

Una vez corras el comando se te presentarán dos preguntas:
1. Si deseas que la llave SSH se guarde en el directorio por defecto. De no ser así, puedes poner el directorio donde quieras guardar la llave. Te recomiendo dejar la llave en el directorio por defecto.
2. Luego de seleccionar el directorio, te pedirá una contraseña extra (passphrase). En lo personal te recomiendo no ponerla debido a que cada vez que quieras usar la llave te pedirá la contraseña, y eso es lo que queremos evitar.

Si haces todo según lo indicado, este sería el resultado:
![SSH Key](https://dev-to-uploads.s3.amazonaws.com/i/6ut8n642zak0ojtemmm7.png)

Verificamos una vez más si tenemos la llave:
![Creación de  una llave ssh](https://dev-to-uploads.s3.amazonaws.com/i/18vdv8vmp3ub5px03ns3.png)
Y efectivamente. It´s ready!

Ahora, vamos a vincularla con nuestra cuenta de GitHub. Pero primero un breve paso más.

## Guardando la llave en el _SSH-Agent_
En GitHub existe algo llamado _SSH-Agent_. Esto nos permite recordar las llaves privadas de cada usuario mientras dura la sesión. De esta manera es que logramos la autenticación. Para lograr esto, vamos a ejecutar este comando en la consola:
`eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_rsa`

Este debería ser el resultado:
![ssh-agent](https://dev-to-uploads.s3.amazonaws.com/i/4qst8j8bjqvmhiltqlw7.png)

Con este paso el _SSH-Agent_ recordará las llaves por nosotros.

## Vincular llave SSH con GitHub
Para poder vincular la llave SSH con tu cuenta de GitHub debes ir a:
_Tu perfil (click en tu avatar) **->** Opción settings **->** En la barra izquierda seleccionas la opción **SHH Keys and GPG Keys**_

Una vez allí, seleccionas la opción _**New SSH Key**_
![SSH Github](https://dev-to-uploads.s3.amazonaws.com/i/p6xbqn2tikrnk5iiwami.png)

En la opción title te recomiendo poner un título descriptivo, por ejemplo: PC de John, PC de trabajo (nombre de empresa), etc... Y en la opción Key deberás pegar **tu llave pública**. Para eso, vamos a la consola y ejecutamos este comando:

`cat ~/.ssh/id_rsa.pub`

Este comando mostrará tu llave pública:
![SSH Public](https://dev-to-uploads.s3.amazonaws.com/i/eu092h38vdomso3dl6up.png)

Copiala y pegala en la opción Key. Así:
![Aprende a crear una llave ssh](https://dev-to-uploads.s3.amazonaws.com/i/um67n8xrbmm8m1qrnz67.png)

Le das en la opción _**Add SSH Key**_ y por motivos de seguridad GitHub te pedirá hacer login nuevamente. Una vez haga el login, vas nuevamente a la opción _**SSH and GPG Keys**_ y tendrás tu llave guardada.

Y eso es todo. Ya puedes clonar repositorios mediante llaves SSH sin ningún tipo de problema. Trabajar más rápido y como un/una profesional.

¡Nos vemos en el próximo post! 🚀