133

Configurar llaves SSH en Git y GitHub

Christian
kris99
10206

¿Para qué necesitamos la criptografía asimétrica?

Cuando enviamos datos por internet, ya sea una imagen, un archivo o sólo un simple mensaje, corremos el riesgo de que nos roben nuestra información en el intento, antes de que llegue al receptor.

¿Qué es la criptografía asimétrica?

La criptografía asimétrica es la forma segura de enviar y recibir un mensaje, ya que incluso si llega a caer en las manos de otra persona, nunca podrá leer el mensaje.

¿Cómo funciona?

En este caso, Bernardo le quiere mandar un mensaje a Ana, ambos cuentan con una llave pública y una privada que están ligadas con un algoritmo matemático, Ana le da a Bernardo su llave pública y ella conserva la llave privada, Bernardo manda su mensaje cifrado con la llave pública que le proporcionó Ana, Ana recibe el mensaje de Bernardo y lo des encripta con su llave privada de esta manera Ana y sólo Ana podrá leer el mensaje que le envió Bernardo.


No estamos exentos a estos ataques a la hora de hacer un push o un pull a GitHub.
O de igual forma pueden crackear el usuario y contraseña y así tener acceso al código de nuestros proyectos, por este motivo debemos tener una conexión segura entre las dos partes.

Este tutorial muestra cómo hacerlo.

¡Ahora si!

¡Vamos a lo técnico!

Windows/Linux
En nuestra consola de git bash(Windows) o nuestra consola (Linux) nos movemos a home, por que las llaves pueden ser para todos los proyectos en los que trabajemos.
Luego generamos las llaves con ssh-keygen seguidos de los parámetros: -t aquí ponemos el algoritmo de encriptación que queremos en este caso ocuparemos la más común que es RSA, -b aquí vamos a especificar que tan compleja es la llave, seguido de -C aquí vamos a poner el email al que se va a configurar la llave.

ssh-keygen -t rsa -b 4096 -C “[email protected]

Nos pide la ruta en la que se va a guardar las credenciales, en este caso damos enter, para que las guarde en home:

Después nos pide una contraseña con espacios (es recomendable ponerla)

Volvemos a ingresar la contraseña:
Nos genera la llave privada: id_rsa en una carpeta oculta .ssh dentro del directorio home y la llave pública id_rsa.pub

Una vez obtenido el resultado sabremos que hemos creado nuestras llaves (pública y privada) SSH satisfactoriamente:

Para comprobarlo escribimos el comando:

ls -al ~/.ssh

Debemos evaluar si está corriendo el servidor de ssh:

eval $(ssh-agent -s)

Agregar la llave privada a Git (Nos pide el password que le dimos con espacios).

ssh-add ~/.ssh/id_rsa

Nos aseguramos de copiar el contenido de nuestra llave SSH pública (id_rsa.pub)
lo podemos hacer con el uso de vi o nano:

vi ~/.ssh/id_rsa.pub

Copiamos el contenido. (Salimos con esc+shift+zz)
En estos momentos debemos de ir a nuestro GitHub → settings → SSH and GPG Keys → New SSH Key

En title ponemos algo que identifique la Lap o el computador que estemos usando, en key pegamos lo que copiamos de nuestra llave pública:

Damos click a Add SSH Key, podemos ver que nos agregó una nueva llave con el nombre que le dimos, pero aún no se ha usado.

Copiamos la llave pública de cualquiera de nuestros repositorio de GitHub (Clone with SSH)

Tenemos que posicionarnos en el proyecto que copiamos la llave SSH pública de GitHub y con el siguiente comando podemos ver a qué repositorio apunta nuestro proyecto:

git remote -v

Seteamos la ruta

git remote set-url origin [email protected]:krisleon99/calculator_utm.git

En este caso no nos dice nada la consola, pero podemos verificarlo ingresando de nuevo el comando (podemos notar que cambió el origin):

git remote -v

Y listo, podemos comprobarlo haciendo un push al repositorio y no nos pedirá el usuario ni la contraseña (La primera vez nos pregunta que si estamos seguros de continuar la coneccion con una llave RSA, le damos yes).

Mac:

ssh-keygen -t rsa -b 4096 -C “[email protected]

Debemos evaluar si está corriendo el servidor de ssh en este caso para Mac el signo de pesos y lo que va entre paréntesis es entre comillas:

eval “$(ssh-agent -s)”

¿Usas macOS Sierra 10.12.2 o superior?

Haz lo siguiente:

cd ~/.ssh
Crea un archivo config…
Con Vim vim config
Con VSCode code config
Pega la siguiente configuración en el archivo…
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ruta-donde-guardaste-tu-llave-privada

Por último agrega tu llave privada:

ssh-add -K ~/.ssh/id_rsa

Para más información ir a:
Platzi/git

Escribe tu comentario
+ 2
Ordenar por:
6
5867Puntos

Buen tutorial, me sirvio mucho ahora que no tengo suscripción para recordar como hacer esto 😄 ¡Saludos!

2
5134Puntos

Buenas ! muy buen tutorial !

Tengo una pregunta, si quiero cambiarle mi contraseña a mi llave se puede hacer ? y si quiero eliminarla o quitarla de donde la añadimos con “ssh-add ~/.ssh/id_rsa” como hago?

2
8420Puntos

Excelente aporte @kris99, 😄 gracias!

2
1553Puntos

Hola kris99, muchas gracias por el artículo. Muy bueno. Saludos.

2

Muy buen tutorial me ayudo bastante … bien explicado sigan aportando de esta manera 😃

1
3302Puntos

Pasa el tiempo, cambié de computador, formatee e instalé varias veces linux y wsl en windows, pero siempre termino regresando a este post XD en todas y cada una de las ocasiones, creo que nunca voy a aprenderme los comandos para configurar mis llaves

1
1645Puntos

Excelente tutorial. Muy ilustrativo

1
8558Puntos

Para hacer back-ups de los proyectos y seguir trabajando en ellos esta muy bueno.

1
5803Puntos

Estoy a la par haciendo el curso de Git y Git Hub y puedes pasar de lo teórico a lo practico en un instante excelente curso

1
7443Puntos

Hey! como aportación a mi no me funciono el comando:

git remote set-url origin [email protected]:krisleon99/calculator_utm.git

Tuve que utilizar:

git remote add origin https://github.com/NOMBRE_USUARIO/NOMBRE_PROYECTO.git

Y resutlo sin problema, muchas gracias por este tutorial!

1
20095Puntos

Gracias por el artículo, estuvo genial 😄

1
8653Puntos

¿Por qué me pide passphrase en cada push o pull? Sí le puse pero quisiera saber si siempre va a pedir o hay alguna forma de que ya no me pida más ingresar el passphrase

1
3456Puntos

Muchas gracias por el aporte, a pesar de haber tomado ya el curso de Git y Github, a veces hace falta recordar.

1
4892Puntos

Muchas gracias por el extraordinario recurso.

Estoy tomando el curso de Git y Github y la verdad esto me ayudo demasiado.

1
13017Puntos

Muy buen tutorial, se nota que el esfuerzo y las ganas de aprender para luego compartir se reflejan en este tipo de ejemplos.

0
1567Puntos

hola,

Alguien sabe depronto, como configurar visual studio code para que pueda conectarse con github, usando ssh con una passphrase ?