Question Est-il possible d'ignorer la saisie de mots de passe lors de l'utilisation de https: // sur GitHub?


J'ai récemment passé à la synchronisation de mes dépôts sur https: // sur GitHub (en raison de problèmes de pare-feu), et il demande un mot de passe à chaque fois. J'avais l'habitude d'avoir un SSH certificat, et c'était suffisant. Y at-il un moyen de contourner le mot de passe dans mon cas (en utilisant http / https)?


1621
2018-03-17 17:47


origine


Réponses:


Avec la version 1.7.9 de Git et plus tard

Depuis Git 1.7.9 (sorti fin janvier 2012), il y a un bon mécanisme dans Git pour éviter d'avoir à taper votre mot de passe tout le temps pour HTTP / HTTPS, appelé aides d'informations d'identification. (Grâce à dazonic pour souligner cette nouvelle fonctionnalité dans les commentaires ci-dessous.)

Avec Git 1.7.9 ou version ultérieure, vous pouvez simplement utiliser l'un des helpers d'informations d'identification suivants:

git config --global credential.helper cache

... qui indique à Git de garder votre mot de passe en mémoire pour (par défaut) 15 minutes. Vous pouvez définir un délai d'expiration plus long avec:

git config --global credential.helper "cache --timeout=3600"

(Cet exemple a été suggéré dans le GitHub page d'aide 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 sur Mac OS X et utilisé Homebrew Pour installer Git, vous pouvez utiliser le fichier de clés Mac OS X natif avec:

git config --global credential.helper osxkeychain

Pour Windows, il y a un assistant appelé Git Credential Manager pour Windows ou gagné dans msysgit.

git config --global credential.helper wincred # obsolete

Avec Git pour Windows 2.7.3+ (Mars 2016):

git config --global credential.helper manager

Pour Linux, vous pouvez utilisation gnome-keyring(ou d'autres implémentations de keyring comme KWallet).

Avec les versions de Git avant le 1.7.9

Avec les versions de Git antérieures à la version 1.7.9, cette option plus sécurisée n'est pas disponible, et vous devrez changer l'URL que votre origin utilisations à distance pour inclure le mot de passe de cette manière:

https://you:password@github.com/you/example.git

... 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 à distance avec:

git config remote.origin.url https://you:password@github.com/you/example.git

Assurez-vous que vous utilisez https et vous devez être conscient que si vous faites cela, votre mot de passe GitHub sera stocké en clair dans votre .git répertoire, ce qui est évidemment indésirable.

Avec n'importe quelle version de Git (enfin, depuis la version 0.99)

Une autre approche consiste à mettre votre nom d'utilisateur et 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 donc moins sécurisé et non recommandé. Cependant, si vous voulez adopter cette approche, ajoutez la ligne suivante à votre ~/.netrc:

machine <hostname> login <username> password <password>

... en remplacement <hostname> avec le nom d'hôte du serveur, et <username> et <password> avec votre nom d'utilisateur et mot de passe. N'oubliez pas de définir des autorisations de système de fichiers restrictives sur ce fichier:

chmod 600 ~/.netrc

Notez que sous Windows, ce fichier doit être appelé _netrcet vous devrez peut-être définir la variable d'environnement% HOME% - pour plus de détails, voir:


2133
2018-03-17 17:54



Vous pouvez également demander à Git de stocker vos informations d'identification de manière permanente en utilisant les éléments suivants:

git config credential.helper store

Remarque: Bien que cela soit pratique, Git stockera vos informations d'identification en texte clair dans un fichier local (.git-credentials) sous votre répertoire de projet (voir ci-dessous pour le répertoire "home"). Si vous n'aimez pas cela, supprimez ce fichier et passez à l'aide de option de cache.

Si vous voulez que Git recommence à vous demander des informations d'identification chaque fois qu'il doit connectez-vous au référentiel distant, vous pouvez exécuter cette commande:

git config --unset credential.helper

Pour stocker les mots de passe dans .git-credentials dans ton %HOME% répertoire par opposition au répertoire du projet: utilisez le --global drapeau

git config --global credential.helper store

638
2017-09-03 01:14



TLDR; Utilisez un fichier netrc crypté avec Git 1.8.3+.

Enregistrement d'un mot de passe pour un référentiel Git L'URL HTTPS est possible avec un ~/.netrc (Unix) ou %HOME%/_netrc (noter la _) sur Windows.

Mais: Ce fichier stockera votre mot de passe en texte brut.

Solution: Crypter ce fichier avec GPG (GNU Privacy Guard)et que Git le déchiffre chaque fois qu'il a besoin d'un mot de passe (pour push/pull/fetch/clone opération).


Note: avec Git 2.18 (Q2 2018), vous pouvez maintenant personnaliser le GPG utilisé pour décrypter le crypté .netrc fichier.

Voir commettre 786ef50, commettre f07eeed (12 mai 2018) par Luis Marsano (``).
(Fusionné par Junio ​​C Hamano - gitster - dans commettre 017b7c5, 30 mai 2018) 

git-credential-netrc: Acceptez gpg option

git-credential-netrc a été codé en dur pour déchiffrer avec 'gpg' outre le fait que   l'option gpg.program.
  C'est un problème sur les distributions comme Debian qui appellent GnuPG moderne quelque chose d'autre, comme 'gpg2'


Instructions pas à pas pour Windows

Avec Windows:

(Git a un gpg.exe dans sa distribution, mais en utilisant une installation complète GPG comprend un gpg-agent.exe, qui mémorisera votre mot de passe associé à votre clé GPG.)

  • Installer gpg4Win Lite, l'interface de ligne de commande gnupg minimale (prenez la le plus récent gpg4win-vanilla-2.X.Y-betaZZ.exe), et complétez votre PATH avec le répertoire d'installation de GPG:

    set PATH=%PATH%:C:\path\to\gpg
    copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
    

(Noter la 'copy'command: Git aura besoin d'un script Bash pour exécuter la commande'gpg'. Depuis gpg4win-vanilla-2 livré avec gpg2.exe, vous devez le dupliquer.)

  • Créez ou importez une clé GPG, et faites-lui confiance:

    gpgp --import aKey
    # or
    gpg --gen-key
    

(Assurez-vous de placer une phrase secrète sur cette clé.)

  • Faites confiance à cette clé

  • Installez le script d'assistance des informations d'identification dans un répertoire de votre %PATH%:

    cd c:\a\fodler\in\your\path
    curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc
    

(Oui, il s'agit d'un script Bash, mais il fonctionnera sous Windows car il sera appelé par Git.)

  • Créer un fichier _netrc en texte clair

    machine a_server.corp.com
    login a_login
    password a_password
    protocol https
    
    machine a_server2.corp.com
    login a_login2
    password a_password2
    protocol https
    

(N'oublie pas le 'protocol' partie: 'http' ou 'https'en fonction de l'URL que vous utiliserez.)

  • Chiffrer ce fichier:

    gpg -e -r a_recipient _netrc
    

(Vous pouvez maintenant effacer la _netrc fichier, en ne conservant que le _netrc.gpg crypté.)

  • Utilisez ce fichier crypté:

    git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"
    

(Noter la '/': C:\path\to... ne fonctionnerait pas du tout.) (Vous pouvez utiliser au début -v -d pour voir ce qui se passe.)

A partir de maintenant, toute commande Git utilisant une URL HTTP (S) qui nécessite une authentification va décrypter cette _netrc.gpgfichier et utilisez 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échiffrer le fichier. Les autres fois, l'agent gpg lancé automatiquement par le premier appel GPG fournira cette phrase secrète pour vous.

De cette façon, vous pouvez mémoriser nombreuses URL / logins / mots de passe dans un fichier, et l'avoir stocké sur votre disque crypté.
Je le trouve plus pratique qu'un assistant "cache", où vous devez vous rappeler et taper (une fois par session) un mot de passe différent pour chacun de vos services distants, pour que le mot de passe soit mis en mémoire cache.


85
2017-08-21 15:48



Il existe un moyen facile et démodé de stocker les informations d'identification de l'utilisateur dans une URL HTTPS:

https://user:password@github.com/...

Vous pouvez changer 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://user@github.com/...) qui vous sauvera au moins la moitié des tracas.

Vous préférerez peut-être passer à SSH ou utiliser le logiciel client GitHub.


32
2018-01-06 16:43



Utilisez un magasin d'informations d'identification.

Pour git 2.11+ sur OSX et linux, utiliser le magasin de données d'identification intégré de git:

git config --global credential.helper libsecret

Pour msysgit 1.7.9+ sur les fenêtres:

git config --global credential.helper wincred

Pour Git 1.7.9+ sur OS X, utilisez:

git config --global credential.helper osxkeychain

30
2017-09-09 03:57



Vous pouvez simplement utiliser

git config credential.helper store

Lorsque vous entrez le mot de passe la prochaine fois que vous tirez ou poussez, il sera stocké dans .git-credentials en texte brut (un peu non sécurisé, mais juste le mettre dans un dossier protégé)

Et voilà, comme indiqué sur cette page:

https://git-scm.com/docs/git-credential-store


30
2017-09-21 13:03



Je suis probablement un peu lent, mais il n'était pas immédiatement évident pour moi que je devais d'abord télécharger l'assistant! J'ai trouvé le téléchargement de credential.helper sur Atlassian S'authentifier en permanence avec des dépôts Git, J'espère que cela aide.

Citation:

Suivez ces étapes si vous souhaitez utiliser Git avec la mise en cache des informations d'identification sur OSX:

Téléchargez le binaire git-credential-osxkeychain.

Exécutez la commande ci-dessous pour vous assurer que le fichier binaire est exécutable:

chmod a+x git-credential-osxkeychain

Mettez-le dans le répertoire / usr / local / bin.

Exécutez la commande ci-dessous:

git config --global credential.helper osxkeychain

18
2017-10-05 05:31



Sur une installation GNU / Linux, un ~ / .netrc fonctionne plutôt bien:

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

Cela peut dépendre des bibliothèques réseau que Git utilise pour HTTPS transport.


18
2017-12-05 13:28



Il suffit d'inclure les informations de connexion dans l'URL:

git remote rm origin 
git remote add origin https://username:mypassword@github.com/path/to/repo.git

15
2017-07-03 07:13