Git http – souvenez-vous des informations d’identification en toute sécurité

Existe-t-il un moyen de laisser git se souvenir de mes identifiants lors de la connexion à des référentiels distants via HTTP (S)?

J’ai essayé l’approche core.askpass détaillée dans git-config pour permettre à un script externe de fournir mes informations d’identification. Bien que cela fonctionne très bien, le nom d’utilisateur et le mot de passe sont toujours stockés en texte brut dans le petit script shell.

git appelle cURL lors de l’exécution via HTTP. Vous pouvez stocker des informations d’identification sécurisées en configurant un fichier .netrc dans le répertoire de base de votre utilisateur et en le rendant privé à l’utilisateur (0600 sous Linux).

Le contenu du fichier fournit le nom d’utilisateur et le mot de passe par domaine distant.

 machine myRemoteServer login myUserName password s3cret 

Voir https://stackoverflow.com/questions/3947530/git-push-fatal-failed/7177690#7177690 pour une configuration côté serveur complète, qui peut facilement inclure des appels sur votre serveur LDAP.

Depuis (je pense) la version 1.7.8 de git, à partir du 2 décembre 2011 1) , git prend en charge les fonctions d’aide aux informations d’identification .

Voir la page de manuel gitcredentials (7) pour plus de détails
(Cette page de core.askpass également l’emplacement de core.askpass ).

L’installation par défaut de git comprend deux assistants:

  • cache : Voir git-credential-cache (1) pour plus de détails.

    Cache les informations d’identification en mémoire pendant une courte période. Les informations d’identification stockées ne touchent jamais le disque et sont oubliées après un délai d’attente configurable. Notez qu’il s’agit d’une solution Unix uniquement, car elle utilise socket pour communiquer avec daemon.

  • store : Voir git-credential-store (1) pour plus de détails.

    Stockez les informations d’identification indéfiniment sur le disque. Le fichier aura ses permissions de système de fichiers pour empêcher les autres utilisateurs du système de le lire, mais il ne sera ni chiffré ni protégé. La même sécurité que la solution .netrc dans la réponse d’Eddie


Il existe des outils d’aide aux tiers pour stocker le nom d’utilisateur et le mot de passe dans KDEWallet (KDE), dans GNOME Keyring , dans Windows Credential Store (désormais intégré dans Git pour Windows ), dans MacOS X Keychain, etc.


Notes de bas de page:

1) La page d’aide de Set Git GitHub mentionne que

Vous devez avoir git 1.7.10 ou plus récent pour utiliser l’assistant d’identification

Depuis git 1.8.3 (mai 2013), vous pouvez maintenant spécifier un .netrc crypté à utiliser par git:

Un nouvel assistant d’identification en lecture seule (dans consortingb/credential/netrc/ ) pour interagir avec les fichiers .netrc/.authinfo a été ajouté.

Ce script vous permettrait d’ utiliser des fichiers netrc chiffrés avec gpg , évitant le problème d’avoir vos informations d’identification stockées dans un fichier texte brut.

 -f|--file AUTHFILE specify netrc-style files. 

Les fichiers avec l’extension .gpg seront déchiffrés par GPG avant l’parsing.
Plusieurs arguments -f sont OK. Ils sont traités dans l’ordre et la première entrée correspondante trouvée est renvoyée via le protocole d’assistance d’identification (voir ci-dessous).

Si aucune option -f n’est donnée, les .authinfo.gpg , .netrc.gpg , .authinfo et .netrc de votre répertoire personnel sont utilisés dans cet ordre.

Pour activer cet assistant d’identification:

 git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2' 

(Notez que Git appenda ” git-credential- ” au nom de l’assistant et le recherchera dans le chemin.)


Voir un exemple complet étape par étape à:
” Existe-t-il un moyen de sauter la saisie du mot de passe lors de l’utilisation de https://github.com “.

L’option sécurisée consiste à utiliser le protocole SSH standard avec une paire de clés publique / privée.