21 votes

Configurez les clients Git, comme GitHub pour Windows, pour qu'ils ne demandent pas d'authentification.

J'ai installé GitHub pour Windows et aussi GitExtensions et j'ai plusieurs versions de git.exe dans mon chemin.

enter image description here

C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\cmd\git.exe
C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\bin\git.exe
E:\cygwin\bin\git.exe
C:\Program Files (x86)\Git\cmd\git.exe
C:\Program Files (x86)\Git\bin\git.exe

Maintenant, quand je fais git push origin master avec l'un des trois derniers git.exe s, il me demande mon nom d'utilisateur. Mais le Git Portable ne demande pas de nom d'utilisateur. Voir la capture d'écran suivante :

enter image description here

Le personnage en forme de cœur est juste un ^C alors ignorez ça.

Comment l'authentification est-elle prise en charge dans ce cas ? En fin de compte, je veux que les trois derniers Gits ne demandent pas d'autorisation. Comment cela est-il possible ?

J'ai trouvé deux fichiers supplémentaires dans le GitHub mais je doute qu'ils aient une quelconque importance :

enter image description here

52voto

Paul Betts Points 41354

Si vous utilisez GitHub pour Windows, tout ce que vous devez faire, c'est.. :

  1. Assurez-vous que vous vous êtes connecté à l'application GUI au moins une fois.
  2. Cliquez sur le lien "Git Shell".

GitHub a déjà résolu ce problème pour vous en ligne de commande, pour les remotes HTTPS et SSH.

45voto

VonC Points 414372

Pour GitHub pour Windows lui-même, Paul Betts ( Personnel de GitHub ) rappelle gentiment à tous que G4W comprend déjà une aide à l'accréditation. (sur la base de CryptProtect et je suppose que le CryptProtectData fonction )
Voir sa réponse ci-dessous .

Pour ceux qui n'utilisent pas G4W, lisez la suite.


Pour ajouter à mon réponse précédente (lors de l'envoi vers GitHub via la console/ligne de commande) :

Un fichier comme ~/.netrc (sous Unix) ou %HOME%/_netrc (sous Windows) peut vous aider à éviter d'entrer vos informations d'identification pour chaque git push que vous feriez sur GitHub. .

Vous pouvez stocker autant d'accréditations que vous le souhaitez dans une netrc fichier.
(pour GitHub ou d'autres fournisseurs d'hébergement de repo)
Mais :

  • vous ne voulez pas stocker votre compte principal de mot de passe GitHub
  • vous ne voulez pas les avoir dans un fichier texte.

Les sections suivantes traitent de ces questions :


Activez le authentification à deux facteurs (2FA) sur votre compte GitHub

(3 septembre 2013)

Configurer 2FA via une application toujours par le biais d'une application, jamais par un SMS, si vous pouvez l'éviter.

La raison est que, par le biais de ce processus d'activation, vous avez accès à votre clé secrète à deux facteurs qui est utilisé pour générer l'authentification du second facteur toutes les 30 secondes :

two factor secret string

De cette façon, vous pouvez aller à tout GAuth ( Google Authenticator ) client entrez la même clé secrète 2FA, et voyez l'écran suivant exact le même code que vous obtiendriez par SMS.
Sauf que, si vous n'avez pas de réseau téléphonique, ça marche quand même ;)

Bien sûr, le Le premier client à utiliser est GAuth sur votre téléphone Android ou votre iphone.

GAuth on Android

Cela signifie que vous n'avez pas à attendre un SMS et que vous conservez votre système 2FA sur votre téléphone.

Toutefois, le fait de disposer de votre clé secrète vous permet de ne pas être limité à un client sur votre téléphone.
Vous pouvez aller sur n'importe quel autre client, comme :

Pour tous ces clients (sur votre téléphone avec GAuth, ou avec un client de bureau ou une page web), vous aurez besoin de votre clé secrète à deux facteurs .

Si vous avez activé votre 2FA par SMS :

  • vous ne connaissez pas votre clé secrète
  • vous ne pouvez pas utiliser un autre client GAuth
  • vous êtes limité à la réception de votre jeton par le biais de votre téléphone (si vous disposez d'un service téléphonique et/ou si vous avez votre téléphone tout court)

Note : si vous avez ajouté une clé dans votre client Gauth sur Android, sans avoir mémorisé au préalable ladite clé secrète, tout n'est pas perdu .
(mais vous avez besoin d'un téléphone rooté)

$ adb shell
# sqlite3 /data/data/com.google.android.apps.authenticator/databases/databases
sqlite> select * from accounts;
1|your@email.address|your2factorkey|0|0
sqlite> .quit
#exit

N'oubliez pas d'obtenir et de sauvegarder les codes de récupération associés (dans le menu de gauche). Account Settings de votre compte GitHub ) :

Recovery code

(Voir aussi la dernière section sur pour sauvegarder ces codes)


Cryptez votre _netrc fichier

(voir le aide d'accréditation netrc avec git1.8.3+ : cryptage gpg)

Vous devez crypter dans ce fichier au moins ces deux informations d'identification :

machine github.com
login username
password xxxx
protocol https

machine gist.github.com
login username
password xxxx
protocol https

Vous ne gardez alors qu'un ~/.netrc.gpg o %HOME%/_netrc.gpg

Mais, si vous activez la nouvelle authentification à deux facteurs décrite ci-dessus, ' xxxx ne sera pas votre compte GitHub : voir la section suivante sur le "Token d'accès personnel".


Générer un jeton d'accès personnel

Vous ne serez pas en mesure de pousser avec votre mot de passe GitHub si vous avez activé 2FA.

Anonymous access to user/repo.git denied

Voici ce que vous verriez (le gpg c'est parce que j'utilise le netrc aide à la reconnaissance des titres ) :

C:\Users\VonC\prog\git\git>git push origin
Using GPG to open %HOME%/_netrc.gpg: [gpg2 --decrypt %HOME%/_netrc.gpg]

You need a passphrase to unlock the secret key for
user: "auser <email@email.com>"
2048-bit RSA key, ID A2EF56, created 2012-09-12 (main key ID DC43D6)

remote: Anonymous access to VonC/git.git denied.                      <=====
fatal: Authentication failed for 'https://VonC@github.com/VonC/git/'  <=====

Alors, allez au Developer de votre compte GitHub (sous-section Personal access tokens ), et générer un Jeton d'accès personnel :

Personal token

Ce jeton ne nécessitera pas d'authentification à deux facteurs. vous pouvez l'utiliser comme mot de passe dans votre _netrc et vous serez en mesure de pousser vers GitHub.

Mais la différence avec le mot de passe de votre compte GitHub principal est :
Vous pouvez révoquer un jeton d'accès personnel (et en générer un nouveau), tout en gardant votre mot de passe principal inchangé.

Si vous aviez crypté votre mot de passe principal de GitHub dans votre fichier ~/.netrc.gpg vous pouvez le remplacer par votre nouveau jeton personnel :

gpg -d %HOME%\_netrc.gpg | sed "s/yourPassord/YourPersonalAccessToken/g" | gpg -e -r auser --yes -o %HOME%\_netrc.gpg

En plusieurs lignes pour plus de lisibilité :

gpg -d %HOME%\_netrc.gpg | 
  sed "s/yourPassord/YourPersonalAccessToken/g" | 
  gpg -e -r auser --yes -o %HOME%\_netrc.gpg

Cela fonctionne même sous Windows, avec l'aide de l'utilitaire unix-like GoW (Gnu sur Windows) qui comprend sed .


Enregistrez vos informations d'identification GitHub.

Je recommande un stockage en ligne des titres de compétences comme lastpass.com

Vous devez économiser :

  • Le mot de passe de votre compte GitHub
  • Votre clé secrète 2FA
  • Votre code de récupération 2FA
  • Votre jeton personnel

LastPass

13voto

prongs Points 2209

https://help.github.com/articles/set-up-git

La section sur la mise en cache des mots de passe dit :

Si vous ne souhaitez pas utiliser GitHub pour Windows, vous pouvez télécharger le logiciel aide pour votre système d'exploitation ici :

Faites cela et tous les autres git.exe fonctionneront sans demander de mot de passe :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X