Cómo Generar y Usar Claves SSH de GitLab

Las solicitudes repetidas de nombre de usuario y contraseña son molestas y una pérdida de tiempo. Si utiliza la autenticación de contraseña con su cuenta de GitLab, cada acción requiere que envíe sus credenciales, ya sea como parte del comando o a través de un prompt interactivo.

Especialmente al automatizar los pipelines CI/CD en GitLab, la autenticación por contraseña puede ser ineficiente y un posible riesgo de seguridad. ¿Por qué no poner fin a su sufrimiento y cambiar a la autenticación mediante Secure Shell (SSH) utilizando claves SSH de GitLab? ¡Sigue leyendo y aprende cómo hacerlo!

Al final de este tutorial, habrás generado un par de claves SSH, utilizado la clave para autenticar y publicar un nuevo proyecto en GitLab.

Prerrequisitos

Este tutorial es una demostración práctica. Para seguirlo, asegúrate de tener los siguientes requisitos.

  • Actualiza o instala Git. La última versión, hasta la fecha de esta redacción, es la 2.25.1.

Visual Studio Code (VS Code). El ejemplo en este tutorial usará VS Code 1.62.3.

Generación de un par de claves SSH en GitLab

Las claves SSH o un par de claves consisten en claves privadas y públicas. En pocas palabras, la clave privada es lo que el cliente (su computadora) presenta al servidor (GitLab) para la autenticación, y la clave pública es lo que el servidor utiliza para descifrar su clave privada. Y si ambas claves coinciden, la autenticación se realiza correctamente.

GitLab admite dos tipos de pares de claves SSH, las claves SSH RSA y ED25519. Pero en este ejemplo, generará el par de claves ED25519 ya que se considera más seguro que las claves RSA. Siga los pasos a continuación para generar un par de claves SSH.

1. En su escritorio, abra una sesión de terminal y ejecute el siguiente comando. Este comando abre su directorio de inicio en VS Code.

code ~

2. En VS Code, haga clic en Terminal —> Nuevo terminal.

Opening a new terminal instance in VSCode

3. En la terminal de VS Code, ejecuta el siguiente comando ssh-keygen -t para generar el tipo de clave SSH ED25519. La etiqueta de comentario -C es opcional pero se recomienda para hacer que tus claves sean más identificables.

ssh-keygen -t ed25519 -C "Gitlab SSH Key"

4. En el próximo indicador que pregunte dónde guardar la clave, presiona Enter para aceptar el nombre de archivo predeterminado. El nombre del archivo debería ser similar a /home/<username>/.ssh/id_ed25519, donde <username> es tu nombre de usuario.

Accepting the default filename

5. A continuación, deja vacía la frase de paso y presiona Enter dos veces. Como resultado, crearás un par de claves SSH sin contraseña.

Leaving the passphrase empty

Deberías ver un resultado similar a la captura de pantalla que muestra la ubicación de la clave privada (id_ed25519) y la clave pública (id_ed25519.pub).

Las claves privadas y públicas tienen el mismo nombre de archivo base. Pero la clave pública tiene una extensión .pub, mientras que la clave privada no tiene una extensión.

Generating the Gitlab SSH key pair

Agregando la Clave SSH de Gitlab a Tu Perfil

Recuerda que la clave privada permanece en tu computadora, mientras que la clave pública debe estar en el servidor de Gitlab. Entonces, después de generar las Claves SSH, tu próximo paso es cargar la clave pública en tu cuenta de Gitlab. Para hacerlo, procede de la siguiente manera.

1. Abre tu archivo de clave pública en VSCode. En el panel Explorador, expande la carpeta .ssh y haz clic en id_es25519.pub. A continuación, selecciona la clave pública y cópiala al portapapeles.

Copying the public key

2. Ahora, abre un navegador web, dirígete a https://gitlab.com, e inicia sesión en tu cuenta de Gitlab.

3. Después de iniciar sesión, navega hasta la configuración de perfil de Claves SSH en https://gitlab.com/-/profile/keys.

  • Pega la clave pública que copiaste anteriormente en el campo de Clave.
  • El campo de Título se rellena automáticamente con la parte de comentario de tu clave pública. Deja el valor del título como está o introduce el valor que prefieras.
  • Opcionalmente, especifica una fecha de caducidad en el campo de Expira en.
  • Por último, haz clic en Agregar clave.
Adding the Gitlab SSH key to your profile

Usando Tu Clave SSH de Gitlab

Hasta ahora, has generado la clave SSH y la has subido a tu cuenta de Gitlab. Lo que queda es probar si tu clave SSH funciona al usarla para conectar y autenticarse en Gitlab.

Iniciar Sesión

En el terminal de VS Code, conecta a tu cuenta de Gitlab ejecutando el siguiente comando.

ssh -T [email protected]

Suponiendo que te estás conectando por primera vez, el comando te pedirá que verifiques la autenticidad del host y confirmes la conexión. Escribe en el prompt y presiona Enter para confirmar.

¿Has notado que no tuviste que introducir un nombre de usuario y contraseña para iniciar sesión? En su lugar, el comando ssh utiliza automáticamente tus claves SSH para autenticación. Después de iniciar sesión correctamente, deberías ver un mensaje de bienvenida que dice, “¡Bienvenido a Gitlab @nombre_de_usuario!“.

Logging in to Gitlab via SSH

Publicar un Nuevo Proyecto

Has confirmado que tu clave SSH de Gitlab funciona y te permite autenticarte con éxito. Pero ¿funciona también cuando interactúas con Gitlab a través de Git? ¿Por qué no probar publicando un nuevo repositorio de Gitlab?

1. Primero, inicializa la configuración de Git y configúrala con el nombre de usuario y la dirección de correo electrónico de tu cuenta de Gitlab. En la terminal de VS Code, ejecuta los comandos git config a continuación para especificar tu nombre de usuario y dirección de correo electrónico de Gitlab, respectivamente.

git config --global user.name "your_username"
git config --global user.email "[email protected]"

El comando que ejecutaste debería actualizar o crear el archivo ~/.gitconfig con la información que proporcionaste.

Initializing the Git configuration

2. A continuación, crea una carpeta en tu directorio principal para tu nuevo repositorio. Nombre la nueva carpeta como mi-primer-proyecto.

El nombre de la carpeta también se convertirá en el nombre del proyecto de tu repositorio Gitlab.

# Crear una nueva carpeta
mkdir ~/my-first-project
# Cambiar el directorio de trabajo a la nueva carpeta
cd ~/my-first-project

3. Inicializa el repositorio ejecutando el comando a continuación. Asegúrate de cambiar el <nombre-de-usuario> con tu nombre de usuario de Gitlab.

git init

Deberías ver un mensaje de confirmación similar a la captura de pantalla a continuación.

Initializing a new repository

4. A continuación, especifica la dirección remota del repositorio Git para tu proyecto. Esta dirección del repositorio determina si autenticarás con claves SSH o con nombre de usuario y contraseña.

Encuentra la sintaxis a continuación, donde <nombre-de-usuario> es tu nombre de usuario de Gitlab y <nombre-de-proyecto> es el nombre del repositorio de Gitlab. Observa que la dirección del repositorio comienza con [email protected], lo que indica que autenticarás con la clave SSH en lugar de un nombre de usuario y contraseña.

git remote add origin git@gitlab.com:<username>/<project-name>.git

Supongamos que el nombre de usuario de Gitlab es kevin, y el nombre del repositorio es mi-primer-proyecto. Ahora ejecuta el siguiente comando en la terminal.

git remote add origin git@gitlab.com:kevin/my-first-project.git

5. Ejecuta el siguiente comando para crear un archivo vacío en tu repositorio llamado README.md.

touch README.md

6. Abre el archivo README.md para editarlo y pega el siguiente contenido en el archivo. Guarda el archivo después de editarlo. Mi primer proyecto para demostrar claves SSH de Gitlab.

My first project to demonstrate Gitlab SSH keys.
Creating a file and adding content

7. Ahora, indica a Git que agregue el nuevo archivo README.md al repositorio y realiza el commit de los cambios.

git add README.md
git commit -m "My first commit"

Deberías ver una salida similar a la mostrada a continuación.

Adding a file and committing changes to the repository

8. Por último, es hora de publicar tu nuevo repositorio. Ejecuta el siguiente comando para enviar el repositorio desde tu computadora a tu cuenta de Gitlab.

git push --all origin

Como puedes ver a continuación, la creación del proyecto fue exitosa ¡y no se solicitaron credenciales! Git utilizó tus claves SSH para autenticarse con Gitlab.

Creating a repository in Gitlab

9. Por último, confirma que tu nuevo proyecto de Gitlab existe en línea. Usa tu navegador para ir a https://gitlab.com/dashboard/projects y ver una lista de tus proyectos existentes. Deberías ver luego el nombre mi-primer-proyecto en la lista.

Viewing the Projects list in Gitlab

10. Además, haz clic en el nombre del proyecto y deberías ver el archivo README.md y su contenido en pantalla.

Viewing the README file

Conclusión

¡Felicidades por haber llegado tan lejos en este tutorial! A lo largo de este tutorial paso a paso, has aprendido cómo generar y usar claves SSH para realizar despliegues seguros de control de versiones en tu repositorio de GitLab.

Con este conocimiento, ahora puedes realizar tareas en tus repositorios de GitLab sin preocuparte por exponer inadvertidamente tu nombre de usuario y contraseña.

¿Has utilizado antes la autenticación de claves SSH en GitLab? ¿Cómo fue la experiencia? ¿Recomendarías a otros que también utilicen claves SSH, o hay alguna razón por la que deberían evitarlo? Haznos saber.

Source:
https://adamtheautomator.com/gitlab-ssh/