Adquiere por un año todos los cursos, escuelas y certificados por un precio especial.

Adquiere por un año todos los cursos, escuelas y certificados por un precio especial.

Antes:$249

Currency
$219/año
Paga en 4 cuotas sin intereses
Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

01d

13h

11m

00s

159

Configurar llaves SSH en Git y GitHub

Christian
kris99
10282

¿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

Conoce más información sobre qué es Git y cómo configurar llaves SSH.

Escribe tu comentario
+ 2
Ordenar por:
7
5998Puntos

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

2
6578Puntos

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
12596Puntos

Excelente aporte @kris99, 😄 gracias!

2
2535Puntos

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
3787Puntos

Seguí todo el procedimiento pero al final me sale el siguiente error:

git push origin main
kex_exchange_identification: read: Connection reset by peer
Connection reset by 140.82.114.3 port 22
fatal: Nose pudo leer del repositorio remoto.

Por favor asegúrate que tienes los permisos de acceso correctos
y que el repositorio existe.

Probé con:

ssh git@ssh.github.com

Y el resultado fué:

Warning: Permanently added the ECDSA host key for IP address '[140.82.114.36]:443' tothelistof known hosts.
PTY allocation request failed on channel 0
Hi educonrado! You've successfully authenticated, but GitHub doesnot provide shell access.
Connection to ssh.github.com closed

Por favor, ¿me pueden ayudar a resolverlo?

No sé si tiene relación pero lo hago desde linux y tengo un proxy.

1
3787Puntos
4 meses

Ya lo conseguí con la ayuda de @GDeGilberto.

$ vim ~/.ssh/config

Agregar:

Host github.com
  Hostname ssh.github.com
  Port 443

Ejecutar pull

git pull origin main

1
6861Puntos

Buen video!!

<script>console.log("xss, botcito.com")</script>
1
6861Puntos
8 meses

Ignoren lo de <script> XD estaba probando algo, no se como borrar el comentario

1
5188Puntos

Gracias por la ayuda, es fácil seguirla. Me trabe en la vinculación con mi GitHub (Seguí todos los pasos y copié toda mi llave pública) en GitHub me sale el siguiente error:
"Key is invalid. You must supply a key in OpenSSH public key format"
Si alguien podría darme luces por favor.

1
11184Puntos

Excelente tutorial con el paso a paso

1
4210Puntos

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
2319Puntos

Excelente tutorial. Muy ilustrativo

1
18556Puntos

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

1
8960Puntos

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
9996Puntos

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
21209Puntos

Gracias por el artículo, estuvo genial 😄

1
3672Puntos

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

1
7597Puntos

Muchas gracias por el extraordinario recurso.

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

1
20927Puntos

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

0
1588Puntos

hola,

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

1
20018Puntos
un año

Para esto, como solución sencilla puedes usar la terminal integrada de VS code.