Credenciales Git
Interacción repositorio local y remoto
Protocolos
- HTTPS (recomendado para dispositivos de uso público)
- SSH (recomendado para nuestros dispositivos)
HTTPS
Pedirá las credenciales (usuario y contraseña) cada vez que interactuemos con el remoto.
Almacenar credenciales HTTPS
Git permite almacenar las credenciales para evitar que nos pida autenticarnos constantemente:
Almacenar las credenciales durante un tiempo determinado (por defecto, 15 min). Luego de realizar esta configuración, en el proximo login almacenará las credenciales.
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=<tiempo_en_segundos>'
Almacenar de manera persistente (no recomendado en entornos donde la seguridad es una prioridad):
git config --global credential.helper store
Deshacer almacenamiento HTTPS
Abrir el archivo de configuración global de Git en tu editor de texto predeterminado:
git config --global --edit
Buscar la línea que contiene credential.helper = <tipo_de_almacenamiento>
y eliminarla o comentarla (agregando un # al principio). Guardar los cambios y cerrar el editor.
Token HTTPS
Un token de acceso es una forma segura de autenticarse en repositorios remotos. Cuando utilizamos un token de acceso con conexiones HTTPS, en lugar de proporcionar nuestro nombre de usuario y contraseña, proporcionamos el token como método de autenticación.
Crear un Token HTTPS en GitLab
Dentro de la plataforma, seguimos los siguientes pasos:
- Vamos a la opción “settings” en nuestro perfil.
- En el panel lateral izquierdo presionamos en “Access Token”
- Presionamos en “Add new token”:
-
Configuramos un nuevo token
- nombre: puede ser lo que mas nos guste.
- fecha de expiración: podemos seleccionar una fecha o si se quiere que nunca expire no se le pone ninguna.
- seleccionamos los permisos del token (si no sabemos le mandamos todos)
-
Cuando generemos el token nos lo mostrará por única vez. Debemos copiarlo en algun lugar para no perderlo. Se mostrará de la siguiente forma:
- Ya podremos utilizarlo. Al interactuar con el remoto, debemos introducir como usuario el “nombre del token” (tambien “nombre de usuario de gitlab”) y como contraseña el “token”.
en caso de tener 2FA, gitlab no nos dejará loguernos con usuario y contraseña tradicional, y no quedará otra que utilizar un token.
SSH (recomendado)
Este método de autenticación, utiliza claves SSH, que son pares de claves criptográficas: una clave pública que se almacena en el servidor remoto y una clave privada que se almacena en tu máquina local.
Crear claves SSH
En Linux podemos crear el par de claves ssh mediante el comando:
ssh-keygen -t rsa -b 4096 -C "<nombre>"
Esto generará un par de claves RSA con una longitud de 4096 bits y asociará la clave pública con el identificador que proporcionaste.
Luego te pedirá que elijas una ubicación para guardar las claves. Si presionas “Enter” lo guarda en la ubicación predeterminada, que suele ser /home/tu_usuario/.ssh/id_rsa
Luego, se te pedirá que ingreses una frase de contraseña opcional para proteger la clave privada. Puedes dejarla en blanco si no deseas una contraseña adicional para acceder a tu clave privada.
Una vez completado el proceso, se habrán generado dos archivos en la ubicación que elegiste:
id_rsa
: Esta es tu clave privada. Mantén esta clave en secreto y no la compartasid_rsa.pub
: Esta es tu clave pública. Puedes compartir esta clave con los servidores remotos o plataformas de alojamiento de repositorios.
Ahora tienes un par de claves SSH que puedes utilizar para autenticarte con repositorios remotos o servicios que admiten la autenticación SSH.
SSH GitLab
Para copiar la clave pública en GitLab debemos seguir los siguientes pasos:
-
Copiamos contenido del archivo que contiene la clave publica (ej:
id_rsa.pub
) -
Dentro de la plataforma nos dirigimos a “User Settings” -> “SSH Keys”
- Presionamos en “Add new key”
- Luego pegamos la clave publica dentro del campo “Key” y le colocamos un nombre que identique al dispositivo dentro del campo “Title”, configuramos el uso (si no sabemos le dejamos “Authentication & Signing”), y si queremos le ponemos fecha de expiración y sino se la sacamos.
¡Listo! ya podés interactuar con el repositorio remoto sin necesidad de introducir credenciales.