jueves, 23 de enero de 2025

GitLab (2): Crear clave SSH, Grupos, Usuarios, Copiar un proyecto del servidor al ordenador local. Branches. Error de permiso: Git: remote: Gitlab: You are not allowed to push code to protected branches on this project

1. Crear usuarios

Vamos a inicio clicando  que está en la parte superior izquierda. A continuación, clicamos el botón "Admin"que està en la parte inferior izquierda.


En la parte izquierda en "Admin area" seleccionamos "Users"


En la parte superior derecha le damos al botón "New User" 
Y en mi caso le voy a dar permisos de administrador

Ahora toca darle una contraseña. Si no se la hemos dado antes, en la lista de usuarios le damos al botón "Edit" que está a la derecha del usuario

Y le damos la contraseña

2. Crear una clave SSH específica para este usuario

Esta clave nos permite la comunicación entre el servidor LDAP y el ordenador cliente de forma cómoda.

Ahora tenemos que entrar a gitlab en el navegador, dando el usuario y contraseña del usuario que hemos creado (en mi caso ximo_dante) y clicamos en el avatar de nuestro perfil enla parte superior izquierda. Ojo esta clave a crear sirve para identificar solo a este usuario (ximo_dante). Es decir si desde un ordenador remoto se utiliza esta clave, entiende que es "ximo_dante" quien ha accedido a GitLab, aunque en el otro ordenador  se haya identificado como "jaimito"

Y seleccionamos Preferences

Ahora podemos ver a la izquierda en "User Settings" la opción de SSH Keys

Y ahora le damos al botón de la izquierda  


Quitar la fecha de expiración!!!!

OJO verificar que en /home/ximo/.ssh no existan dos ficheros llamados  id_ed25519id_ed25519.pub, pues si existen los machacara. Para ello hay que cambiar el nombre de estos ficheros.

Y en "learn more" nos sale una pantalla de ayuda que en definitivas cuentas quiere que ejecutemos en el ordenador cliente (NO en el servidor) este comando o similar

ssh-keygen -t ed25519 -C "Ximo Dante en la maquina de casa"

Donde con "-C" indicamos un comentario para que cuando lo tenga el servidor tener referencias

Y nos pedira si queremos cambiar el nombre del fichero y una contraseña. En principio omito la contraseña y creará en /home/ximo/.ssh dos ficheros llamados  id_ed25519 y id_ed25519.pub

Ahora copiamos el contenido del fichero de la clave pública "id_ed25519.pub" en el cuadro grande de la pantalla anterior que tiene por título "Key"


Y ahora le damos al botón 

3. Crear Grupos

Los grupos son como una carpeta para guardar los proyectos

Para crear un grupo le damos al avatar que hay en la parte superior izquierda y elegimos el usuario

Y ya nos aparece "Groups" en el menú lateral y le damos al botón de "New Group" y "Create Group". En mi caso le he dado al nombre de grupo "Softprop"




Y le damos al botón de "Create Group" y ya lo tenemos.

3.1 Dar acceso a usuarios al grupo, Visibilidad. Errores de acceso

Si le hemos creado el proyecto como privado, solamente el usuario que ha creado el proyecto puede verlo. Dicho usuario ha importado unas SSH keys, y son las que Gitlab comprueba para dar acceso. Es decir si cedemos la clave SSH a otro usuario y este la utiliza, entonces GiTLab entiende es el usuariop original quien se está conectando.
En el caso de repositorios con visibilidad interna, cualquier usuario registrado puede acdeder a él.
Y si el repositorio es público, cualquier usuario, registrado o no puede acceder a él.
Para el caso de proyectos privados, si queremos acceder a él, hay que pasarle la clave SSH que se ha guradado el usuario que creó el proyecto.
Si tenemos varias claves SSH en el ordenador cliente, y no las hemos declarado en el fichero ~/.ssh/config  entonces el ordenador va buscando una que se ajuste a la IP o dominio indicado, y la primera que encuentra, intenta validarse con ella. SI resulta que dicha clave es la que registró otro usuario de Gitlab, y no se le ha dado permisos a este usuario de Gitlab al proyecto, entonces no dejará entrar y dará ese error del proyecto.

Para dar acceso a otros usuarios de GitLab, vamos al botón "Admin" de la parte de abajo a la izquierda. Luego en "Admin area" de la izquierda seleccionamos "Groups". Marcamos nuestro gtrupo "Softprop" y aparece esta pantalla


Le damos al "Manage access
Seleccionamos el usuario y le damos al botón invitar.
Si no hacemos esto, da error cuando intentamos subir al repositorio los cambios producidos en la carpeta del ordenador cliente.

Git: remote: Gitlab: You are not allowed to push code to protected branches on this project


y "Invite Members"

Seleccionamos un usuario de los que nos propone y "Invite"

3.2 Fichero del cliente ~/.ssh/config

Este fichero es muy importante si no queremos tener problemas, pues nos indica para cada servidor que fichero de claves SSH hay que utilizar. Veamos esta casuística sin fichero config:
  • Como hemos dicho, si solo hay una clave SSH en la carpeta ~/.ssh, entonces no hay problema. 
  • Si para cada servidor hay solo una clave SSH, tampoco hay problema, pues para conectarnos con el servidor, el sistema va buscando una clave SSH que se corresponda con el servidor buscado. 
  • Pero si tenemos varias claves SSH, y cada una se generó con un usuario distinto en GitLab, si queremos acceder al servidor GitLab y pillamos una clave generada para un usuario de GitLab que no tiene acceso al proyecto (pues este proyecto es privado)
Veamos un ejemplo de fichero config:

# GITHUB
Host github.com
   HostName github.com
   PreferredAuthentications publickey
   IdentityFile ~/.ssh/id_rsa_hub

# GITLAB
Host gitlab.com
   HostName gitlab.com
   PreferredAuthentications publickey
   IdentityFile ~/.ssh/id_rsa_lab

En este caso definimos el servidor a entrar, el tipo de autenticación y el fichero de identidad a usar (que es el que tiene las claves SSH).
No está definido el usuario a utilizar, pero en el caso de querer usar otro usuario, basta con cambiar el nombre fichero 

4. Crear Proyecto.

Aprovechando la pantalla anterior, enla parte superior derecha hay un botón 
y le damos a "Create blank project" y le damos de nombre "10.softprop-python"

Y le damos a "Create Project"

4. Copiar el proyecto al ordenador local

Una vez hemos creado el proyecto le damos al botón Code y copiamos el "Clone with SSH"


Ahora que hemos copiado el clone with SSH, nos vamos al ordenador cliente, y en la carpeta PADRE de donde queremos copiar el proyecto hacemos el "git clone" para crearnos la carpeta 

# Vamos a la carpeta padre del proyecto
cd ~
cd MyPython

# Hacemos el gitclone
git clone git@gitlab.XXXXXXX.es:softprop/10.softprop-python.git

Y si nos fijamos, ya tenemos la carpeta del proyecto creada

Nos vamos a Visual Studio y nos metemos en la carpeta


Veamos los ficheros importantes:

4.1 .gitignore

Se encuentra en la carpeta del proyecto. Un ejemplo del mismo es:

venv_softprop-python
my_not_inmportant_folder
__pycache__

Siendo:

  •  "venv_softprop-python" el entorno virtual python del proyecto
  • "my_not_inmportant_folder" una carpeta que no es importante
  • "__pycache__" una carpeta donde VStudio se guarda datos internos

4.2 .git/config


[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = git@gitlab.XXXXXXXX.es:softprop/10.softprop-python.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main
	vscode-merge-base = origin/main

Aquí podemos ver el repositorio que engancha.

5. Crear "Branches"

Dentro de VS podemos crear "Branches" así








No hay comentarios :

Publicar un comentario