Existe-t-il un moyen de laisser git se souvenir de mes informations d'identification lors de la connexion à des référentiels distants via HTTP (S)?
J'ai essayé le core.askpass
approche détaillée dans git-config
pour laisser un script externe fournir mes informations d'identification. Bien qu'il 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 sur HTTP. Vous pouvez stocker des informations d'identification sécurisées en configurant un .netrc
fichier dans le répertoire personnel de votre utilisateur, et le rendre privé pour 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#717769 pour la configuration complète côté serveur, qui peut facilement inclure des appels à votre serveur LDAP.
Depuis (je pense) git version 1.7.8, à partir du 2 décembre 20111), git prend en charge les soi-disant assistants d'informations d'identification .
Voir gitcredentials (7) page de manuel pour plus de détails
(Cette page de manuel décrit également où core.askpass
correspond à cela).
L'installation par défaut de git comprend deux assistants:
cache : Voir git-credential-cache (1) pour plus de détails.
Cachez 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 configurable. Notez qu'il s'agit d'une solution Unix uniquement, car elle utilise le socket pour communiquer avec le démon.
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 autorisations de système de fichiers définies pour empêcher les autres utilisateurs du système de le lire, mais ne sera pas chiffré ou protégé d'une autre manière. La même sécurité que .netrc
solution dans réponse Eddie
Il existe des assistants d'identification tiers pour stocker le nom d'utilisateur et le mot de passe dans KDEWallet (KDE), dans Porte-clés GNOME , dans Windows Credential Store (ceci est maintenant intégré dans Git pour Windows ), dans le trousseau MacOS X, etc.
Notes:
1) La page Configurer Git Aide de GitHub mentionne que
Vous avez besoin de git 1.7.10 ou plus récent pour utiliser l'assistant d'informations d'identification
Depuis git 1.8. (mai 2013), vous pouvez maintenant spécifier un _ crypté .netrc
pour que git utilise:
A nouvel assistant d'identification en lecture seule (in
contrib/credential/netrc/
) pour interagir avec le.netrc/.authinfo
fichiers ont été ajoutés.
Ce script vous permettrait d'utiliser des fichiers netrc cryptés gpg , évitant ainsi le problème d'avoir vos informations d'identification stockées dans un fichier texte brut.
-f|--file AUTHFILE
specify netrc-style files.
Fichiers avec le
.gpg
l'extension sera décryptée par GPG avant l'analyse.
Plusieurs-f
les arguments 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).Quand non
-f
option est donnée,.authinfo.gpg
,.netrc.gpg
,.authinfo
, et.netrc
les fichiers de votre répertoire personnel sont utilisés dans cet ordre.Pour activer cet assistant d'informations d'identification:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(Notez que Git ajoutera "
git-credential-
"au nom de l'assistant et recherchez-le dans le chemin d'accès.)
Voir un exemple pas à pas complet sur:
" Existe-t-il un moyen d'ignorer la saisie du mot de passe lorsque vous utilisez https://github.com
".
L'option sécurisée consiste à utiliser SSH standard avec une paire de clés publique/privée.
Cela pourrait fonctionner pour vous ... http://samuel.kadolph.com/2011/03/store-your-git-https-passwords-in-your-os-x-keychain/