L'authentification GitHub échoue sur https, renvoyant une mauvaise adresse e-mail


128

Le lancement d'un push ou de toute autre action avec GitHub à partir de la ligne de commande (via https, pas ssh) qui appelle le nom d'utilisateur et le mot de passe échoue non seulement mais, quand il le fait, il retourne

Username for 'https://github.com': username
Password for 'https://username@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/username/repository.git/'

Je n'ai pas d' @github.comadresse. Le mot de passe et le nom d'utilisateur sont corrects.

Je sais que je pourrais passer à SSH et utiliser des clés, mais cela ne répond pas à la raison pour laquelle l'authentification échoue sur https.


Documentation git-scm.com/book/en/... git-config - Obtenir et définir le référentiel ou les options globales git-scm.com/docs/git-config
John Smith

Réponses:


171

Le support de GitHub a immédiatement déterminé la racine du problème: l'autorisation à deux facteurs.

Pour utiliser GitHub sur le shell avec https, créez un jeton OAuth . Comme le note la page, j'ai dû supprimer mes informations d'identification de nom d'utilisateur et de mot de passe du trousseau, mais avec osx-keychainen place, le jeton est stocké en tant que mot de passe et les choses fonctionnent exactement comme elles le feraient sur https sans autorisation à deux facteurs en place.


4
+1. Vous pouvez également utiliser un PAT (Personal Access Token) dans un netrc chiffré: stackoverflow.com/a/18607931/6309
VonC

Quelle est la différence entre un PAT et un OAuth?
lindhe

@lindhe Le jeton OAuth est un type de jeton, un PAT est un jeton OAauth dans ce cas.
Kerry Jones le

22

Je n'ai pas d' @github.comadresse

Vous n'êtes pas obligé: le @est le séparateur entre le nom d'utilisateur: mot de passe et le domaine.
Ce n'est pas une adresse e-mail.

Une URL https GitHub complète serait:

https://username:password@github.com/username/reponame.git

Sans le mot de passe (qui serait alors demandé sur la ligne de commande), cela donnerait:

https://username@github.com/username/reponame.git

Mais encore une fois, ce username@github.comn'est pas une adresse e-mail, juste la première partie des informations d'identification.

Assurez-vous que la casse de votre usernameet reponameest correcte: elle est sensible à la casse .

Notez que vous pouvez stocker et crypter vos informations d'identification dans un .netrc.gpg(ou _netrc.gpgsous Windows) si vous ne souhaitez pas mettre lesdites informations en clair dans l'URL.
Voir « Existe-t-il un moyen d'ignorer la saisie du mot de passe lors de l'utilisationhttps://github ».


Vous pouvez également laisser le mot de passe de côté, en tapant le mot de passe à chaque fois. Dans ce cas, ce serait le cas https://username@github.com/username/reponame.git.
Mark Hildreth

Oh, ça a du sens. Je vous remercie. Je connaissais la sensibilité à la casse et je suis convaincu que le nom d'utilisateur et le mot de passe que je fournis sont corrects. (Ils fonctionnent très bien pour signe dans le site.) A
ele

2
@ele oui, mais votre mot de passe inclut-il des caractères spéciaux (comme ! * ' ( ) ; : @ & = + $ , / ? # [ ])? Ils devraient être "encodés en pourcentage" ( en.wikipedia.org/wiki/Percent-encoding ).
VonC

Le mot de passe est alphanumérique. Je vais voir ce que donne 'git remote -v' quand je serai le prochain sur la machine, mais il semble que je devrais peut-être contacter le support GitHub ensuite.
ELE

@ele essayez d'abord l'approche .netrc (ne cryptez même pas, juste pour tester). Si cela ne fonctionne pas, la prise en charge de GitHub est en effet la prochaine étape.
VonC le

21
  • Allez dans Credential Manager => Windows Manager
  • Supprimer tout ce qui concerne tfs
  • Cliquez maintenant sur Ajouter un identifiant générique et indiquez les valeurs suivantes

    (1) Adresse Internet ou réseau: git: https: //tfs.donamain name (2) username: votre nom d'utilisateur (3) password: votre mot de passe

    cela devrait le réparer


sensationnel. J'adore la façon dont il stocke le mot de passe incorrect si vous le saisissez mal. Ensuite, vous devez aller le mettre à jour manuellement ou le supprimer
Kolob Canyon

10

Cela peut se produire sous Windows si vous avez déjà stocké des informations d'identification différentes. Accédez à Credential Manager et supprimez les informations d'identification github stockées


1
Il est également possible de modifier directement le mot de passe dans Windows Credential Manager avec le nouveau mot de passe.
Spenhouet le


8

La même chose s'est produite avec moi, lorsque j'ai activé l'authentification bidirectionnelle pour github. Ce que j'ai fait pour résoudre:

  • Obtenez votre jeton d'accès personnel. Ceci que vous devez vérifier et générer s'il n'est pas déjà disponible. Lien pour cela: https://github.com/settings/tokens
  • Accédez à votre dossier local et supprimez et re-clonez la branche de github.
  • Maintenant, essayez la commande que vous essayiez plus tôt, c'est-à-dire: git pull origin master
  • Entrez le nom d'utilisateur et dans le mot de passe, collez le jeton généré et n'oubliez pas de sauvegarder ce jeton quelque part, afin que vous puissiez le réutiliser si nécessaire.

Cela résoudra votre problème.


Bonne légende - cela m'arrivait sur mac => j'ai dû régénérer mon PAT
SliverNinja - MSFT

Nous devons générer le jeton si nous avons besoin d'autorisations non présentes dans les jetons générés précédemment. De plus, si nous avons perdu notre jeton précédent, nous pouvons générer ce nouveau jeton et l'utiliser comme mot de passe pour nous authentifier au lieu de notre mot de passe git d'origine.
Mohd Belal

5

Juste au cas où cela aide quelqu'un d'autre aussi, j'étais connecté à l'application mac, la ligne de commande fonctionnant bien, mais comme j'ai ensuite activé 2FA, mes commandes renvoyaient l'erreur. J'ai dû me déconnecter de l'application, puis je pourrais utiliser mon jeton d'accès personnel dans mes commandes selon la réponse d'ele ici .

Espérons que cela aide quelqu'un!


-2

Sous Windows, vous pouvez être bloqué en silence par votre antivirus ou votre pare-feu Windows. Désactivez temporairement ces services et poussez / tirez depuis l'origine distante.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.