Aprende a crear y configurar una clave de implementación para que tu servidor Ubuntu clone y extraiga un repositorio Git de Gitlab.

Cómo crear y configurar las claves SSH de despliegue para un repositorio privado de Gitlab en tu servidor Ubuntu

Cuando trabaja con un repositorio de Git, su proyecto puede ser modificado activamente por muchas personas. Algunos de ellos pueden no ser confiables, ya que pueden ser nuevos empleados o algo así. En este caso, si necesitan hacer git pull en el servidor para actualizar los cambios de una confirmación en su servidor de producción, es posible que no desee que todos conozcan la contraseña del repositorio. Otro caso en el que no desea proporcionar la contraseña del repositorio cada vez que haces git pullgit clone, se automatizó despliegues.

Es por eso que la función de "claves de implementación" existe en Gitlab. Una clave de implementación es una clave SSH que se almacena en su servidor y otorga acceso a un único repositorio de Gitlab. Esta clave se adjunta directamente al repositorio en lugar de a una cuenta de usuario personal. En este artículo, le mostraremos paso a paso cómo puede automatizar el proceso de implementación de su proyecto alojado en Gitlab.

1. Busque o cree una clave SSH para su servidor

Lo primero que debe hacer es verificar si su servidor ya tiene una clave pública creada en el .sshdirectorio del usuario en el servidor, así que inicie una sesión SSH en su servidor y escriba el siguiente comando:

cat ~/.ssh/id_rsa.pub

Esto buscará automáticamente en la carpeta de su usuario que en nuestro caso es /home/vagrant/.ssh, si la salida del comando muestra una cadena que comienza con ssh-rsa, entonces ya tiene una clave SSH que puede usar para agregar a su repositorio, entonces puede saltar al paso 2 . Si, en cambio, obtienes el resultado: cat: ~ / .ssh / id_rsa.pub: No existe tal archivo o directorio, primero deberás crear una clave SSH. Puede crear una clave SSH en Ubuntu a través de SSH con el siguiente comando (primero navegue hasta el directorio .ssh y escriba):

ssh-keygen -t rsa

Para facilitar el proceso, no agregaremos una frase clave para la clave SSH, por lo que, como se menciona en el asistente de creación, simplemente presione Intro para no usar una frase clave:

SSH Key Generation via SSH

Como se muestra en la imagen, no tenemos el archivo id_rsaid_rsa.puben nuestro .sshdirectorio. Esta clave funciona como un "pase" que permite clonar / extraer su proyecto en el servidor actual, hasta este punto no hace nada, por lo que deberá seguir los otros pasos.

2. Configure el cliente SSH para encontrar su SSH privado de GitLab en el servidor

Como siguiente paso, debe establecer que, al clonar desde Gitlab, la clave de implementación debe usarse como autenticación en lugar de un nombre de usuario y una contraseña. Para ello, debe asegurarse de que ssh-agent esté habilitado ejecutando el siguiente comando:

eval $(ssh-agent -s)

Luego puede proceder a agregar su clave al registro SSH usando el siguiente comando:

# Add your private key
ssh-add ~/.ssh/id_rsa

Para conservar estas configuraciones, deberá guardarlas en un archivo de configuración. Normalmente, en los clientes OpenSSH, puede configurar esto en el archivo ~/.ssh/config. Si el archivo no existe, puede crearlo:

# Go to SSH directory
cd ~/.ssh/

# Create the config file
# alternatively create the file using SFTP
# or in the way you want, we are using touch
touch config

Y registre su clave en el archivo. En este tutorial, estamos agregando una única clave SSH del sitio web de Gitlab (versión no autohospedada), por lo que el contenido de nuestro archivo de configuración será:

# GitLab.com server
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/id_rsa

Como puede tener varios proyectos en un servidor o un proyecto que utiliza diferentes repositorios que deben actualizarse, puede implementar sin problemas varias claves SSH en el mismo archivo siguiendo la notación:

# GitLab.com server
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename-01

# Private GitLab server
Host gitlab.mycompany.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename

3. Agregue la clave del servidor como clave de implementación en la configuración de su repositorio.

Ahora necesitas la clave pública de tu servidor (creada en el paso 1), en este paso le estás diciendo a Gitlab "Oye, si alguien usa esta clave SSH para clonar, permítele que lo haga". Puede obtener el contenido del archivo público usando un editor de texto a través de SFTP, o simplemente imprimiendo la salida del archivo con SSH usando el siguiente comando:

cat ~/.ssh/id_rsa.pub

Esto generaría en nuestro caso el contenido de la clave pública:

Mantenga esa cadena larga en el portapapeles, ya que la necesitará para pegarla en Gitlab. A continuación, acceda a la configuración de su repositorio en Gitlab, en nuestro caso, dado que estamos usando la versión no autohospedada de Gitlab, la configuración para las claves de implementación se encuentra en https://gitlab.com/<username>/<repository-name>/settings/repository. El menú para agregar una nueva clave de implementación se ve así:

Gitlab SSH Deployment Keys

Aquí solo necesitaría agregar el contenido del id_rsa.pubarchivo, proporcionar un título y decidir si el servidor se puede usar para impulsar cambios también o no (normalmente desmarcado ya que es producción). Una vez que se agrega la clave en su repositorio, ahora debería poder clonar / extraer su repositorio en el servidor de implementación.

4. Clona y extrae el repositorio para probar

Como paso final, para verificar si todo salió bien puedes clonar tu repositorio para ver si se solicitan las credenciales del repositorio o no, en caso de que así sea, lee el tutorial nuevamente y verifica qué hiciste mal. De lo contrario, podrá clonar su proyecto usando el siguiente comando:

Nota

Recuerde clonar a través de SSH, no HTTPS; de lo contrario, es posible que se le soliciten las credenciales.

git clone git@gitlab.com:username/repositoryname.git

# Or once the project is clone, pull changes

git pull origin master

Al hacer esto, es posible que haya notado que no tuvo que ingresar su nombre de usuario ni contraseña de Gitlab gracias a la clave de implementación.

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores