Recherche de site Web

Comment réparer Git demandant toujours les informations d'identification de l'utilisateur pour l'authentification HTTP(S)


Pour accéder ou travailler avec un référentiel Git distant, vous pouvez utiliser les protocoles SSH ou HTTP(S) ; avec le premier, lorsqu'il s'agit de référentiels privés, vous pouvez simplement configurer des clés SSH sans phrase secrète, ce qui vous permet de transférer des données en toute sécurité sans saisir votre nom d'utilisateur et votre mot de passe.

Cependant, avec HTTP(S), chaque connexion vous demandera de saisir votre nom d'utilisateur et votre mot de passe (lorsque Git a besoin d'une authentification pour un contexte d'URL particulier) – les utilisateurs de Github le savent bien.

Dans cet article, nous allons vous montrer comment réparer Git demandant toujours les informations d'identification de l'utilisateur pour accéder via HTTP(S). Nous expliquerons différentes manières d'empêcher Git de demander à plusieurs reprises un nom d'utilisateur et un mot de passe lors de l'interaction avec un référentiel distant via HTTP(S).

Comment installer Git sous Linux

Si le package Git n'est pas installé sur votre système, exécutez la commande appropriée pour votre distribution Linux pour l'installer (utilisez la commande Sudo si nécessaire).

sudo apt install git      [On Debian/Ubuntu]
yum install git           [On CentOS/RHEL/Fedora]
sudo zypper install git   [On OpenSuse]
sudo pacman -S git        [On Arch Linux]

Saisie du nom d'utilisateur et du mot de passe Git dans l'URL distante

Comme nous l'avons mentionné précédemment, lors du clonage d'un dépôt Git distant via HTTP(S), chaque connexion a besoin d'un nom d'utilisateur et d'un mot de passe. comme indiqué.

Pour empêcher Git de vous demander votre nom d'utilisateur et votre mot de passe, vous pouvez saisir les informations de connexion dans l'URL comme indiqué.


sudo git clone https://username:[email /username/repo_name.git
OR
sudo git clone https://username:[email /username/repo_name.git local_folder

Le principal inconvénient de cette méthode est que votre nom d'utilisateur et votre mot de passe seront enregistrés dans la commande dans le fichier historique du Shell.

ainsi que dans le fichier .git/config sous le dossier local, ce qui présente un risque de sécurité.

cat .git/config

Remarque : Pour les utilisateurs de Github qui ont activé l'authentification à deux facteurs ou qui accèdent à une organisation qui utilise l'authentification unique SAML, vous devez générez et utilisez un jeton d'accès personnel au lieu de saisir votre mot de passe pour HTTPS Git (comme indiqué dans les exemples de résultats de ce guide). Pour générer un jeton d'accès personnel, dans Github, accédez à Paramètres => Paramètres du développeur => Jetons d'accès Personnels.

Enregistrement du nom d'utilisateur et du mot de passe du référentiel Git distant sur le disque

La deuxième méthode consiste à utiliser l'assistant d'informations d'identification Git pour enregistrer votre nom d'utilisateur et votre mot de passe dans un fichier brut sur le disque, comme indiqué.

git config credential.helper store				
OR
git config --global credential.helper store		

À partir de maintenant, Git écrira les informations d'identification dans le fichier ~/.git-credentials pour chaque contexte d'URL, lors du premier accès. Pour afficher le contenu de ce fichier, vous pouvez utiliser la commande cat comme indiqué.

cat  ~/.git-credentials

Pour les commandes suivantes pour le même contexte d'URL, Git lira vos informations d'identification utilisateur à partir du fichier ci-dessus.

Tout comme la méthode précédente, cette façon de transmettre les informations d'identification de l'utilisateur à Git n'est pas non plus sécurisée puisque le fichier de stockage n'est pas chiffré et n'est protégé que par les autorisations standard du système de fichiers.

La troisième méthode expliquée ci-dessous est considérée comme plus sécurisée.

Mise en cache du nom d'utilisateur et du mot de passe du référentiel Git distant en mémoire

Enfin et surtout, vous pouvez également utiliser l'assistant d'informations d'identification Git pour enregistrer temporairement vos informations d'identification en mémoire pendant un certain temps. Pour ce faire, exécutez la commande suivante.

git config credential.helper cache
OR
git config --global credential.helper cache

Après avoir exécuté la commande ci-dessus, lorsque vous essayez d'accéder à un référentiel privé distant pour la première fois, Git vous demandera votre nom d'utilisateur et votre mot de passe et les enregistrera en mémoire pendant un certain temps.

Le temps de mise en cache par défaut est de 900 secondes (ou 15 minutes), après quoi Git vous demandera de saisir à nouveau votre nom d'utilisateur et votre mot de passe. Vous pouvez le modifier comme suit (1 800 secondes=30 minutes ou 3 600 secondes=1 heure).

git config --global credential.helper 'cache --timeout=18000'
OR
git config --global credential.helper 'cache --timeout=36000'

Pour plus d'informations sur Git et les assistants d'identification, consultez leurs pages de manuel.

man git
man git-credential-cache
man git-credential-store

Ce guide a-t-il été utile ? Faites-le-nous savoir via le formulaire de commentaires ci-dessous. Vous pouvez également partager vos questions ou réflexions sur ce sujet.