J'ai récemment basculé vers la synchronisation de mes référentiels sur https: // sur GitHub (en raison de problèmes de pare-feu), et il demande un mot de passe à chaque fois.
Existe-t-il un moyen de mettre en cache les informations d'identification, au lieu de s'authentifier à chaque fois git push
?
git
authentication
github
git-push
git-config
Zepplock
la source
la source
_netrc
fichier contenant vos informations d'identification. Voir ma réponse ci-dessous . J'ai trouvé cela plus sûr que legit-credential-winstore.exe
(cache mémoire) qui est un peu bogué sous Windows.git-credential-winstore
fonctionnait le mieux pour Windows. Qu'est-ce que le buggy? La configuration de ssh est l'option préférée, bien que je l'ai fait plusieurs fois, c'est beaucoup plus sujet aux erreurs et parfois tout simplement ne fonctionne pas lorsque vous devez vous connecter à plusieurs hôtes.Réponses:
Avec Git version 1.7.9 et versions ultérieures
Depuis Git 1.7.9 (sorti fin janvier 2012), il existe un mécanisme soigné dans Git pour éviter d'avoir à taper tout le temps votre mot de passe pour HTTP / HTTPS, appelés assistants d'identification . (Merci à dazonic d' avoir signalé cette nouvelle fonctionnalité dans les commentaires ci-dessous.)
Avec Git 1.7.9 ou version ultérieure, vous pouvez simplement utiliser l'un des assistants d'identification suivants:
... qui indique à Git de garder votre mot de passe en cache pendant 15 minutes (par défaut). Vous pouvez définir un délai d'expiration plus long avec:
(Cet exemple a été suggéré dans la page d'aide de GitHub pour Linux .) Vous pouvez également stocker vos informations d'identification de façon permanente si vous le souhaitez, voir les autres réponses ci-dessous.
L'aide de GitHub suggère également que si vous êtes sous Mac OS X et que vous avez utilisé Homebrew pour installer Git, vous pouvez utiliser le magasin de clés natif de Mac OS X avec:
Pour Windows, il existe un assistant appelé Git Credential Manager pour Windows ou wincred dans msysgit .
Avec Git pour Windows 2.7.3+ (mars 2016):
Pour Linux, vous pouvez utiliser
gnome-keyring
(ou une autre implémentation de porte-clés telle que KWallet).Avec les versions Git antérieures à 1.7.9
Avec les versions de Git antérieures à 1.7.9, cette option plus sécurisée n'est pas disponible et vous devrez modifier l'URL que votre
origin
télécommande utilise pour inclure le mot de passe de cette manière:... en d'autres termes avec
:password
après le nom d'utilisateur et avant le@
.Vous pouvez définir une nouvelle URL pour votre
origin
télécommande avec:Assurez-vous que vous utilisez
https
et sachez que si vous le faites, votre mot de passe GitHub sera stocké en texte brut dans votre.git
répertoire, ce qui n'est évidemment pas souhaitable.Avec n'importe quelle version de Git (enfin, depuis la version 0.99)
Une autre approche consiste à mettre votre nom d'utilisateur et votre mot de passe dans votre
~/.netrc
fichier, bien que, comme pour conserver le mot de passe dans l'URL distante, cela signifie que votre mot de passe sera stocké sur le disque en texte brut et est donc moins sécurisé et déconseillé. Cependant, si vous souhaitez adopter cette approche, ajoutez la ligne suivante à votre~/.netrc
:... en remplaçant
<hostname>
par le nom d'hôte du serveur, et<username>
et<password>
par votre nom d'utilisateur et mot de passe. N'oubliez pas non plus de définir des autorisations de système de fichiers restrictives sur ce fichier:Notez que sous Windows, ce fichier doit être appelé
_netrc
et vous devrez peut-être définir la variable d'environnement% HOME% - pour plus de détails, voir:la source
git config --global credential.helper osxkeychain
sur OS X. Pour les autres OS, voir help.github.com/articles/set-up-githttps://username:[email protected]/username/project.git
. Il rend les mots de passe en texte brut stockés sur le disque presque assez sûr à utiliser.git config --global credential.helper cache
ne fonctionne pas sur Windows: stackoverflow.com/questions/11693074/… utilisez gitcredentialstore sur Windows et soyez heureuxVous pouvez également demander à Git de stocker vos informations d'identification de manière permanente en utilisant les éléments suivants:
Remarque: Bien que cela soit pratique, Git stockera vos informations d'identification en texte clair dans un fichier local (.git-credentials) sous le répertoire de votre projet (voir ci-dessous pour le répertoire "home"). Si vous n'aimez pas cela, supprimez ce fichier et passez à l'utilisation de l'option de cache.
Si vous souhaitez que Git recommence à vous demander des informations d'identification à chaque fois qu'il doit se connecter au référentiel distant, vous pouvez exécuter cette commande:
Pour stocker les mots de passe dans
.git-credentials
votre%HOME%
répertoire par opposition au répertoire du projet: utilisez l'--global
indicateurla source
git config --global credential.helper store
--global
drapeau était redondant. Même sans cet indicateur, le fichier d'informations d'identification a été créé dans le%USER_HOME%
répertoire.TLDR; Utilisez un fichier netrc chiffré avec Git 1.8.3+ .
L'enregistrement d'un mot de passe pour une URL HTTPS du référentiel Git est possible avec un
~/.netrc
(Unix) ou%HOME%/_netrc
(notez le_
) sous Windows.Mais : ce fichier stockerait votre mot de passe en texte brut.
Solution : cryptez ce fichier avec GPG (GNU Privacy Guard) et faites-le décrypter par Git chaque fois qu'il a besoin d'un mot de passe (pour
push
/pull
/fetch
/clone
opération).Remarque: avec Git 2.18 (Q2 2018), vous pouvez désormais personnaliser le GPG utilisé pour décrypter le
.netrc
fichier crypté .Voir commit 786ef50 , commit f07eeed (12 mai 2018) de Luis Marsano (``) .
(Fusionné par Junio C Hamano -
gitster
- dans commit 017b7c5 , 30 mai 2018)Instructions pas à pas pour Windows
Avec Windows:
(Git a un
gpg.exe
dans sa distribution, mais l'utilisation d'une installation GPG complète inclut ungpg-agent.exe
, qui mémorisera votre phrase secrète associée à votre clé GPG.)Installez
gpg4Win Lite
, l'interface de ligne de commande gnupg minimum (prenez la plus récentegpg4win-vanilla-2.X.Y-betaZZ.exe
), et complétez votre CHEMIN avec le répertoire d'installation de GPG:(Notez la
copy
commande ' ': Git aura besoin d'un script Bash pour exécuter la commande 'gpg
'. Comme ilgpg4win-vanilla-2
est livré avecgpg2.exe
, vous devez le dupliquer.)Créez ou importez une clé GPG et faites-lui confiance:
(Assurez-vous de mettre un mot de passe pour cette clé.)
Faites confiance à cette clé
Installez le script d'assistance des informations d'identification dans un répertoire de votre
%PATH%
:(Attention: le script est renommé dans Git 2.25.x / 2.26, voir ci-dessous)
(Oui, c'est un script Bash, mais il fonctionnera sur Windows car il sera appelé par Git.)
Créer un fichier _netrc en texte clair
(N'oubliez pas la
protocol
partie ' ': 'http
' ou 'https
' selon l'URL que vous utiliserez.)Chiffrez ce fichier:
(Vous pouvez maintenant supprimer le
_netrc
fichier en ne gardant que le fichier_netrc.gpg
crypté.)Utilisez ce fichier crypté:
(Notez le '
/
':C:\path\to...
ne fonctionnerait pas du tout.) (Vous pouvez utiliser d'abord-v -d
pour voir ce qui se passe.)Désormais, toute commande Git utilisant une URL HTTP (S) qui nécessite une authentification déchiffrera ce
_netrc.gpg
fichier et utilisera le login / mot de passe associé au serveur que vous contactez. La première fois, GPG vous demandera la phrase secrète de votre clé GPG, pour décrypter le fichier. Les autres fois, l'agent gpg lancé automatiquement par le premier appel GPG vous fournira cette phrase secrète.De cette façon, vous pouvez mémoriser plusieurs URL / identifiants / mots de passe dans un seul fichier et les stocker sur votre disque crypté.
Je le trouve plus pratique qu'un "cache" helper ", où vous devez vous souvenir et taper (une fois par session) un mot de passe différent pour chacun de vos services distants, pour que ce mot de passe soit mis en cache en mémoire.
Avec Git 2.26 (Q1 2020), l'exemple d'aide des informations d'identification à utiliser
.netrc
a été mis à jour pour fonctionner immédiatement. Voir patch / discussion .Voir commit 6579d93 , commit 1c78c78 (20 décembre 2019) par Denton Liu (
Denton-L
) .(Fusionné par Junio C Hamano -
gitster
- dans commit 1fd27f8 , 25 déc.2019 )Et:
Avec la version 2.26 (T1 2020), l'exemple d'assistance des informations d'identification pour l'utilisation de .netrc a été mis à jour pour fonctionner immédiatement.
Voir commit 6579d93 , commit 1c78c78 (20 décembre 2019) par Denton Liu (
Denton-L
) .(Fusionné par Junio C Hamano -
gitster
- dans commit 1fd27f8 , 25 déc.2019 )Jeff King (
peff
) ajoute:la source
curl -o c:\prgs\bin\git-credential-netrc https://raw.github.com/git/git/master/contrib/credential/netrc/git-credential-netrc
sert: vous devez copier legit-credential-netrc
n'importe où dans votre chemin ($PATH
), pour que git puisse appeler 'credential-netrc
'._netrc
n'a pas fonctionné pour moi sur unWindows 7
PC, mais cela a.netrc
fonctionné pour youtube-dl avec l'--netrc
argument transmis.https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl
(piping dans sept ans plus tard 😉)Il existe un moyen simple et à l'ancienne de stocker les informations d'identification de l'utilisateur dans une URL HTTPS:
Vous pouvez modifier l'URL avec
git remote set-url <remote-repo> <URL>
L'inconvénient évident de cette approche est que vous devez stocker le mot de passe en texte brut. Vous pouvez toujours simplement entrer le nom d'utilisateur (
https://[email protected]/...
) qui vous fera au moins économiser la moitié des tracas.Vous préférerez peut-être passer à SSH ou utiliser le logiciel client GitHub.
la source
Utilisez un magasin d'informations d'identification.
Pour Git 2.11+ sur OS X et Linux , utilisez le magasin d'informations d'identification intégré de Git :
Pour msysgit 1.7.9+ sur Windows :
Pour Git 1.7.9+ sur OS X, utilisez:
la source
git: 'credential-gnome-keyring' is not a git command. See 'git --help'.
printf "protocol=https\nhost=git.mycompany.com\n" | git credential-manager get
( plus de détails ici ). Vous devez toujours utiliser un jeton d'accès personnel avec cela, et bien sûr utiliser 2FA sur votre compte GitHub.Vous pouvez simplement utiliser
Lorsque vous saisirez le mot de passe la prochaine fois avec Pull ou Push, il sera stocké dans un fichier .git-credentials en texte brut (un peu incertain, mais placez-le simplement dans un dossier protégé).
Et c'est tout, comme indiqué sur cette page:
git-credential-store
la source
git config credential.helper manager
plutôtIl n'était pas immédiatement évident pour moi que je devais d'abord télécharger l'aide! J'ai trouvé le téléchargement de credential.helper sur Atlassian's Authentifying permanent with Git repositories .
Citation:
Suivez ces étapes si vous souhaitez utiliser Git avec la mise en cache des informations d'identification sur OS X:
Téléchargez le binaire git-credential-osxkeychain.
Exécutez la commande ci-dessous pour vous assurer que le binaire est exécutable:
Mettez-le dans le répertoire
/usr/local/bin
.Exécutez la commande ci-dessous:
la source
Incluez simplement les informations de connexion dans l'URL:
Remarque: je ne recommande pas cette méthode, mais si vous êtes pressé et que rien d'autre ne fonctionne, vous pouvez utiliser cette méthode.
la source
Sur une configuration GNU / Linux, un ~ / .netrc fonctionne très bien aussi:
Cela peut dépendre des bibliothèques réseau que Git utilise pour le transport HTTPS .
la source
chmod 0600 ~/.netrc
.Pour Windows, vous pouvez utiliser le plug-in Git Credential Manager (GCM). Il est actuellement géré par Microsoft. La bonne chose est qu'il enregistre le mot de passe dans le Windows Credential Store, pas en texte brut.
Il y a un programme d'installation sur la page des versions du projet. Cela installera également la version officielle de Git pour Windows avec le gestionnaire d'informations d'identification intégré. Il permet une authentification à deux facteurs pour GitHub (et d'autres serveurs). Et dispose d'une interface graphique pour la connexion initiale.
Pour les utilisateurs de Cygwin (ou les utilisateurs utilisant déjà le Git officiel pour Windows), vous préférerez peut-être l'installation manuelle. Téléchargez le package zip à partir de la page des versions . Extrayez le package, puis exécutez le
install.cmd
fichier. Cela s'installera dans votre~/bin
dossier. (Assurez-vous que votre~/bin
répertoire est dans votre PATH.) Vous le configurez ensuite à l'aide de cette commande:Git exécutera ensuite le
git-credential-manager.exe
lors de l'authentification sur n'importe quel serveur.la source
printf "protocol=https\nhost=git.mycompany.com\n" | git credential-manager get
( plus de détails ici ). Vous devez toujours utiliser un jeton d'accès personnel avec cela, et bien sûr utiliser 2FA sur votre compte GitHub.Si vous ne souhaitez pas stocker votre mot de passe en texte clair comme l'a dit Mark, vous pouvez utiliser une URL GitHub différente pour la récupération que pour la transmission. Dans votre fichier de configuration, sous
[remote "origin"]
:Il demandera toujours un mot de passe lorsque vous poussez, mais pas lorsque vous récupérez, au moins pour les projets open source.
la source
OAuth
Vous pouvez créer votre propre jeton d'API personnel ( OAuth ) et l'utiliser de la même manière que vous utiliseriez vos informations d'identification normales (à:)
/settings/tokens
. Par exemple:.netrc
Une autre méthode consiste à configurer votre utilisateur / mot de passe dans
~/.netrc
(_netrc
sous Windows), par exemplePour HTTPS, ajoutez la ligne supplémentaire:
Un assistant d'identification
Pour mettre en cache votre mot de passe GitHub dans Git lors de l'utilisation de HTTPS, vous pouvez utiliser un assistant d'identification pour dire à Git de se souvenir de votre nom d'utilisateur et de votre mot de passe GitHub chaque fois qu'il communique avec GitHub.
git config --global credential.helper osxkeychain
(osxkeychain helper
est requis),git config --global credential.helper wincred
git config --global credential.helper cache
En relation:
la source
Vous pouvez utiliser des assistants d'identification.
où
x
est le nombre de secondes.la source
store
,cache
et d'autres choses courantes sont répertoriées et expliquées?Après avoir cloné le référentiel
repo
, vous pouvez modifierrepo/.git/config
et ajouter une configuration comme ci-dessous:Ensuite, on ne vous demandera pas
username
etpassword
encore.la source
helper = manager
(mais on me demande un nom d'utilisateur + un dépôt pour le premier push).Je sais que ce n'est pas une solution sécurisée, mais parfois vous avez juste besoin d'une solution simple - sans rien installer d'autre. Et comme helper = store ne fonctionnait pas pour moi, j'ai créé un assistant factice:
Créez un script et placez-le dans votre dossier bin utilisateurs, ici nommé credfake , ce script fournira votre nom d'utilisateur et votre mot de passe:
rendez-le exécutable:
puis configurez-le dans git:
(ou utilisez-le sans --global pour le seul dépôt)
et - voilá - git utilisera cet utilisateur + mot de passe.
la source
Un jeton d'authentification doit être utilisé à la place du mot de passe du compte. Accédez aux paramètres / applications GitHub, puis créez un jeton d'accès personnel. Le jeton peut être utilisé de la même manière qu'un mot de passe.
Le jeton est destiné à permettre aux utilisateurs de ne pas utiliser le mot de passe du compte pour le travail de projet. Utilisez uniquement le mot de passe lorsque vous effectuez des tâches d'administration, comme la création de nouveaux jetons ou la révocation d'anciens jetons.
Au lieu d'un jeton ou d'un mot de passe qui accorde à un utilisateur un accès complet à un compte GitHub, une clé de déploiement spécifique au projet peut être utilisée pour accorder l'accès à un référentiel de projet unique. Un projet Git peut être configuré pour utiliser cette clé différente dans les étapes suivantes lorsque vous pouvez toujours accéder à d'autres comptes ou projets Git avec vos informations d'identification normales:
Host
,IdentityFile
pour la clé de déploiement, peut-être leUserKnownHostsFile
, et peut-être leUser
(même si je pense que vous n'en avez pas besoin).ssh -F /path/to/your/config $*
GIT_SSH=/path/to/your/wrapper
devant votre commande Git normale. Ici,git remote
(l'origine) doit utiliser le[email protected]:user/project.git
format.la source
Il est préférable d'utiliser les informations d'identification pour la sécurité, mais vous pouvez les conserver pendant un certain temps en utilisant le cache:
Vos informations d'identification seront enregistrées pendant 3600 secondes.
la source
--timeout
et les informations d'identification seront stockées pour toujours.windowsservercore
)?Les choses sont un peu différentes si vous utilisez l' authentification à deux facteurs comme je le suis. Comme je n'ai pas trouvé de bonne réponse ailleurs, je vais en coller une ici pour que je puisse la trouver plus tard.
Si vous utilisez l'authentification à deux facteurs, la spécification du nom d'utilisateur / mot de passe ne fonctionnera même pas - vous obtenez un accès refusé. Mais vous pouvez utiliser un jeton d'accès à l'application et utiliser l'aide aux informations d'identification de Git pour le mettre en cache pour vous. Voici les liens pertinents:
Et je ne me souviens pas où j'ai vu cela, mais quand on vous demande votre nom d'utilisateur - c'est là que vous collez le jeton d'accès à l'application. Laissez ensuite le mot de passe vide. Cela a fonctionné sur mon Mac.
la source
Cela fonctionne pour moi, j'utilise Windows 10
la source
Habituellement, vous avez une URL distante, quelque chose comme ça,
Si vous souhaitez ignorer le nom d'utilisateur et le mot de passe lors de l'utilisation
git push
, essayez ceci:Je viens d'ajouter la même URL (avec les détails de l'utilisateur, y compris le mot de passe) à l'origine.
REMARQUE: cela ne fonctionne pas si le nom d'utilisateur est un identifiant de messagerie.
la source
J'ai obtenu ma réponse de la page de manuel de gitcredentials (7) . Pour mon cas, je n'ai pas de cache d'informations d'identification dans mon installation Windows; J'utilise credential-store.
Après avoir utilisé credential-store, le nom d'utilisateur / mot de passe sont stockés dans le [dossier utilisateur] /. Git-credentials fichier. Pour supprimer le nom d'utilisateur / mot de passe, supprimez simplement le contenu du fichier.
la source
git config --global credential.helper wincred
ce magasin le mot de passe en permanence.La documentation du compositeur mentionne que vous pouvez l'empêcher d'utiliser l'API GitHub, afin qu'il agisse comme
git clone
:La section ressemblerait donc à ceci:
Gardez à l'esprit que l'API est là pour une raison. Donc, cela devrait être une méthode de dernier recours concernant l'augmentation de la charge sur github.com.
la source
Vous modifiez également le fichier bashrc et y ajoutez un script.
Cela vous demanderait votre mot de passe une fois lorsque vous démarrez Git, puis s'en souviendrait jusqu'à ce que vous vous déconnectiez.
la source
Si vous utilisez
osxkeychain
un jeton qui a expiré et que vous souhaitez le mettre à jour, procédez comme suit:Exécutez dans le terminal, puis appuyez deux fois sur entrée.
Vous devez maintenant être invité à saisir un nom d'utilisateur / mot de passe. Cependant, il semble parfois que cela ne «prenne» pas et que vous devez continuer à rentrer.
Si tel est le cas, redémarrez votre ordinateur . Maintenant, la prochaine fois que vous exécutez une commande git et entrez votre nom d'utilisateur / mot de passe, il sera enregistré.
la source