Añadiendo una clave SSH a GitHub

Ronaldo B.1 de agosto de 20226 min de lectura

En este artículo

¿Alguna vez has oído hablar de las llaves SSH? Pueden ayudarnos mucho a optimizar algunos procesos repetitivos cuando estamos actualizando nuestros repositorios remotos en GitHub. Hablaremos sobre ellas en este artículo.

¿Qué es SSH?

Al descargar un repositorio en GitHub, tenemos dos protocolos a nuestra disposición: 1) HTTPS y 2) SSH. La primera opción permite que transferimos datos de manera segura a nuestro GitHub. Cuando usamos este protocolo, necesitamos informar nuestro usuario y contraseña de GitHub cada vez que deseemos agregar nuevos archivos a nuestro repositorio remoto. Esto es muy seguro y funciona bien. Sin embargo, con el tiempo, este proceso puede convertirse en un “problema”, ya que el proceso repetitivo de informar nuestras credenciales puede volverse agotador.

Pero, cuando usamos la segunda opción, el SSH, no necesitamos informar nuestro usuario y contraseña en cada acceso. Solo hay que configurar nuestras credenciales una vez y luego siempre podremos acceder a nuestro GitHub sin informarlas, ya que el SSH se utiliza especialmente para realizar la conexión con servidores remotos.

Lo que necesitamos hacer es crear una llave SSH en nuestro computador local y añadirla a GitHub. Esta llave es como una credencial. Para entenderlo mejor, piensa en esta ilustración: cuando vamos a algún evento, tal vez haya algún torniquete o sistema de verificación en la entrada del evento. Solo podemos entrar al evento si tenemos una credencial, generalmente una placa con nuestros datos. Podemos decir que una llave SSH es como esa “placa”, que nos permitirá acceder a GitHub remotamente. En este artículo entenderemos cómo funciona la creación de esta credencial.

Primero, entendamos el problema que puede surgir si no tenemos una llave SSH configurada. Vamos a clonar un repositorio en GitHub. Enseñamos a crear un repositorio en este artículo: Creando primer repositorio en GitHub

Al acceder a cualquier repositorio, vemos la opción de realizar su descarga. Vamos a seleccionar la opción SSH para el clon:

Opción de clonación con SSH en el sitio de GitHub

Al hacer clic en esta opción, veremos la URL de nuestro repositorio y un botón para copiarla:

Opción de copiar la URL del repositorio en GitHub

Solo un detalle interesante: ya podemos notar una diferencia entre un repositorio en SSH y uno en HTTPS: el repositorio en SSH inicia su dirección con “[email protected]”, mientras que el HTTPS comienza con “https://github.com”.

Ahora intentaremos ejecutar el comando git clone en el Terminal:

git clone [email protected]:anthony-hcode/first-repository.git

Al ejecutar este comando, veremos la siguiente respuesta:

Retorno del comando git clone en nuestro Terminal

Nuestra clonación no funcionó. Vemos el retorno de un mensaje de error que nos informa que no poseemos las credenciales necesarias para acceder al repositorio. En otras palabras, se nos ha denegado el permiso.

Ahora comenzaremos la creación y configuración de la llave SSH para resolver este problema. Dividiremos este proceso en dos pasos: 1) crear la llave SSH en nuestro computador y 2) añadir esta llave a GitHub.

Creando una llave SSH

En este artículo ejecutaremos varios comandos a través del Terminal. Si estás usando Windows, por favor usa Git Bash. Pero si estás usando Linux o Mac, puedes usar el Terminal de esos Sistemas Operativos. Entonces, ¡comencemos la creación!

Windows

El primer comando que ejecutaremos es ssh-keygen, como vemos a continuación:

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

Nota que informé mi correo electrónico en este comando. Es importante que sea el correo electrónico registrado en tu GitHub.

Necesitaremos responder algunas preguntas. Primero, se preguntará la ubicación donde queremos guardar el archivo con nuestra llave, como vemos a continuación:

Comando ssh-keygen en el Terminal

Por defecto, este archivo quedará en la carpeta del usuario del Sistema, dentro de la carpeta .ssh, y el nombre del archivo será id_rsa.

Podemos cambiar el nombre de este archivo si lo deseamos. Para ello, tendremos que informar la ruta completa hasta la carpeta .ssh y el nombre del archivo que deseamos.

La segunda pregunta será una contraseña para nuestra llave.

Contraseña para la llave SSH en el Terminal

Podemos añadir la contraseña que queramos. Incluso tenemos la opción de no añadir ninguna contraseña para acceder a esta llave (lo cual no se recomienda). Después de informar la contraseña, solo presiona Enter. Se solicitará que confirmemos la contraseña. Después de eso, veremos el siguiente resultado:

Mensaje de éxito en nuestro Terminal

¡Nuestra llave ha sido creada con éxito! Ahora vamos a crear un agente SSH. Es un programa muy útil, que será responsable de realizar nuestra autenticación con el servidor remoto, en nuestro caso GitHub. Para crearlo, ejecuta este comando:

eval $(ssh-agent -s)

Finalmente, vamos a ejecutar el siguiente comando:

ssh-add ~/.ssh/id_rsa

Informamos la ruta hasta el archivo id_rsa, que fue el nombre que definimos para nuestra llave. Si cambiaste el nombre de este archivo, deberás informarlo al ejecutar este comando.

Linux

El proceso en Linux será bastante parecido, con algunos pocos cambios. Comencemos con el comando ssh-keygen:

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

Después de realizar la creación como informamos arriba, vamos a crear el agente SSH, con este comando:

eval "$(ssh-agent -s)"

Nota que una pequeña diferencia es que usamos comillas en este comando, a diferencia de lo que vemos en Windows. Por último, vamos a añadir la llave de nuestro computador al agente con este comando:

ssh-add ~/.ssh/id_rsa

Mac

Ahora vamos a realizar la creación en Mac, ya estamos volviéndonos expertos en este proceso ;).

Primero ejecutamos el comando ssh-keygen:

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

Vamos a crear nuestro agente SSH:

eval "$(ssh-agent -s)"

Y ahora añadimos la llave al agente:

ssh-add -K ~/.ssh/id_rsa

Nota que en el caso de Mac debemos informar el parámetro -K para el comando ssh-add.

Con esto, nuestra llave está correctamente creada y configurada en nuestro computador local.

Agregando la llave SSH a GitHub

Ahora que ya tenemos nuestra llave creada, vamos a añadirla a github.com. Será necesario acceder a la página de configuraciones de nuestro GitHub. Para ello, haz clic en el enlace en la parte superior derecha del sitio de GitHub, donde aparece nuestra foto de perfil, y luego selecciona la opción “Settings”:

Opción de Configuraciones en el sitio de GitHub

En la página siguiente, haz clic en la opción “SSH and GPG keys”, en el panel que estará a la izquierda:

Opción de las llaves SSH en GitHub

En la página siguiente veremos la lista de llaves SSH que ya tenemos registradas, y también un botón con la opción de crear una nueva llave:

Opción de una nueva llave SSH en GitHub

Al hacer clic en este botón, veremos esta página:

Página de creación de una nueva llave SSH

Esta es la página donde podemos añadir una llave SSH a GitHub. Esta llave necesita un título, que podemos elegir, y el contenido de la llave en sí. Para conseguir este contenido, ejecutaremos otro comando en nuestro Terminal, que implica copiar el archivo de la llave SSH que creamos hace un momento.

Si tu computador es Windows, ejecuta lo siguiente:

clip < ~/.ssh/id_rsa.pub

Si estás usando un Mac, ejecuta el comando a continuación:

pbcopy < ~/.ssh/id_rsa.pub

Pero, si tu computador es Linux, será necesario instalar el recurso de xclip para realizar el proceso de copia del archivo. Ejecuta este comando:

sudo apt-get install xclip

Después de tener esta herramienta instalada, ejecuta este comando:

xclip -sel clip < ~/.ssh/id_rsa.pub

Ahora que tenemos el contenido del archivo copiado, vamos a pegarlo en GitHub y hacer clic en “Add SSH key”:

Opción de crear nueva llave SSH

Quizás se requiera que informemos nuestra contraseña de GitHub. Después de eso, nuestra llave SSH estará correctamente añadida. Ahora, si intentamos clonar nuestro repositorio nuevamente, con el mismo comando que informamos al inicio del artículo, veremos el siguiente resultado:

Mensaje de éxito al clonar un repositorio

¡El proceso de clonación del repositorio funcionó correctamente! Y seguirá funcionando al ejecutar los otros comandos git, como git pull o git push.

Si te gustó este artículo, no olvides compartirlo con otros. Eso nos ayuda a seguir trayendo contenido para nuestro Blog. ¡Hasta el próximo artículo :)

Sigue aprendiendo con Hcode

Regístrate en la plataforma de cursos y sigue las próximas guías del blog.