Crear clave RSA para hacer commits y PULL en Gitlab sin autenticarse

Tiempo de lectura: 3 minutos

Hoy os voy a enseñar cómo podeís crear una clave RSA para utilizar en tus proyectos GITLAB https://gitlab.com/

Primero vamos a la consola de Ubuntu (se puede usar WSL si utilizas Windows)

ssh-keygen -t rsa -b 4096 -C "email@example.com"

Indica dentro de «email@example.com» el email de la cuenta de Gitlab.

Nos pedirá un nombre para el fichero y una contraseña (si no ponemos contraseña, no nos la pedirá al utilizar la clave)

Una vez generada, editamos el .pub que ha creado en el mismo directorio. Copiamos el contenido y lo pegamos en la página de Gitlab.

Pulsamos en perfil > Preferencias > Claves SSH

Después añadimos la clave (Recuerda copiarla entera desde ssh-rsa hasta tu e-mail incluido):

Ahora la ponemos en una carpeta que sepamos dónde está y para utilizarla con la consola usamos este comando:

Recuerda añadir los permisos de lectura a la clave:

chmod 400 config/git/key
  • Para clonar:
git clone repositorio(git) --config core.sshCommand="ssh -i config/git/key/"
  • Para hacer un pull:
GIT_SSH_COMMAND='ssh -i ../config/git/key' git pull origin master'

También puedes añadir la clave RSA directamente al proyecto global (https://docs.gitlab.com/ee/user/ssh.html)

Clave RSA para generar PULL remoto en Gitlab

Para poder hacer un PULL remoto, necesitamos una clave RSA de GITLAB. Para generarla hacemos lo siguiente:

Ir a tu usuario y seleccionar Claves SSH

  1. Genera una clave RSA local:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Cuando solicite el nombre de la clave indica:

.ssh/id_rsa

Esto generará una clave privada y una clave pública en la ruta especificada.

  1. Agrega la clave pública en GitLab:
  • Copia el contenido de la clave pública (cat ~/.ssh/id_rsa.pub) a tu portapapeles.
  • Abre GitLab y navega a tu perfil > configuraciones > claves SSH.
  • Haz clic en «Agregar clave SSH».
  • Dale un nombre a la clave (por ejemplo, «Mi clave SSH de GitLab»).
  • Pega el contenido de la clave pública en el campo «clave».
  • Haz clic en «Agregar clave».
  1. Agrega la clave privada en tu máquina local:
  • Copia la clave privada (cat ~/.ssh/id_rsa) a un archivo local (por ejemplo, gitlab_rsa).
  • Asigna permisos restringidos a la clave privada (chmod 400 gitlab_rsa) para evitar que otros usuarios puedan leerla.
  • Agrega la clave privada a tu agente SSH (ssh-add gitlab_rsa).

Si el comando ssh-add no ha funcionado puedes utilizar este comando:

sudo ssh-agent sh -c 'ssh-add .ssh/gitlab_rsa'

Ahora deberías poder hacer pull sin ingresar el nombre de usuario y la contraseña cada vez.

Para asignar al repositorio GIT que funcione por clave SSH, tienes que poner el siguiente comando (lo incluyo en el Pipeline, pero puedes hacerlo a mano y omitirlo).

git remote set-url origin git@gitlab.com:<usuario-proyecto>/<nombre-proyecto>.git

Si la clave no funciona, podemos renombrarla a ./.ssh/id_rsa

Si la clave funciona con root, debemos copiar la clave al directorio /ro

Deja un comentario