GitHub-Authentifizierung schlägt über https fehl und gibt eine falsche E-Mail-Adresse zurück

128

Das Initiieren eines Pushs oder einer anderen Aktion mit GitHub über die Befehlszeile (über https, nicht ssh), die den Benutzernamen und das Kennwort abruft, schlägt nicht nur fehl, sondern kehrt auch zurück

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

Ich habe keine @github.comAdresse. Das Passwort und der Benutzername sind korrekt.

Ich weiß, dass ich zu SSH wechseln und Schlüssel verwenden könnte, aber das antwortet nicht, warum die Authentifizierung über https fehlschlägt.

ele
quelle
Dokumentation git-scm.com/book/en/… git-config - Repository oder globale Optionen abrufen
John Smith

Antworten:

171

Die Unterstützung von GitHub bestimmte sofort die Ursache des Problems: die Zwei-Faktor-Autorisierung.

Erstellen Sie ein OAuth-Token , um GitHub über die Shell mit https zu verwenden . Wie auf der Seite vermerkt, musste ich meine Benutzernamen- und Kennwortanmeldeinformationen aus dem Schlüsselbund entfernen, aber wenn osx-keychaindas Token vorhanden ist, wird es als Kennwort gespeichert, und die Dinge funktionieren genau so, wie sie über https ohne Zwei-Faktor-Autorisierung funktionieren würden.

ele
quelle
4
+1. Sie können auch ein PAT (Personal Access Token) in einem verschlüsselten Netzwerk verwenden: stackoverflow.com/a/18607931/6309
VonC
Was ist der Unterschied zwischen einem PAT und einem OAuth?
Lindhe
@indhe OAuth-Token ist eine Art Token, in diesem Fall ist die PAT ein OAauth-Token.
Kerry Jones
22

Ich habe keine @github.comAdresse

Sie müssen nicht: Das @ist das Trennzeichen zwischen dem Benutzernamen: Passwort und der Domain.
Es ist keine E-Mail-Adresse.

Eine vollständige GitHub-https-URL wäre:

https://username:[email protected]/username/reponame.git

Ohne das Passwort (das dann in der Kommandozeile abgefragt würde) würde dies Folgendes ergeben:

https://[email protected]/username/reponame.git

Aber auch hier [email protected]handelt es sich nicht um eine E-Mail-Adresse, sondern nur um den ersten Teil der Anmeldeinformationen.

Achten Sie darauf , den Fall Ihrer usernameund reponameist richtig: es Groß- und Kleinschreibung .

Beachten Sie, dass Sie Ihre Anmeldeinformationen in einem .netrc.gpg(oder _netrc.gpgunter Windows) speichern und verschlüsseln können, wenn Sie diese Anmeldeinformationen nicht in der URL löschen möchten.
Siehe " Gibt es eine Möglichkeit, die Kennworteingabe bei Verwendung zu überspringen?https://github ".

VonC
quelle
Sie können das Passwort auch weglassen und jedes Mal das Passwort eingeben. In diesem Fall wäre es https://[email protected]/username/reponame.git.
Mark Hildreth
Oh, das macht Sinn. Danke dir. Ich wusste um die Groß- und Kleinschreibung und bin zuversichtlich, dass der von mir angegebene Benutzername und das Passwort korrekt sind. (Sie funktionieren gut, um sich auf der Website
anzumelden
2
@ele ja, aber enthält dein Passwort Sonderzeichen (wie ! * ' ( ) ; : @ & = + $ , / ? # [ ])? Sie müssten "prozentcodiert" sein ( en.wikipedia.org/wiki/Percent-encoding ).
VonC
Das Passwort ist alphanumerisch. Ich werde sehen, was 'git remote -v' gibt, wenn ich das nächste Mal am Computer bin, aber es hört sich so an, als müsste ich mich als nächstes an den GitHub-Support wenden.
ele
@ele versuchen Sie zuerst den .netrc-Ansatz (nicht einmal verschlüsseln, nur zum Testen). Wenn das nicht funktioniert, ist die GitHub-Unterstützung in der Tat der nächste Schritt.
VonC
21
  • Gehen Sie zu Credential Manager => Windows Manager
  • Löschen Sie alles, was mit tfs zu tun hat
  • Klicken Sie nun auf Generische Anmeldeinformationen hinzufügen und geben Sie die folgenden Werte ein

    (1) Internet- oder Netzwerkadresse: git: https: //tfs.donamain name (2) Benutzername: Ihr Benutzername (3) Passwort: Ihr Passwort

    das sollte es beheben

Jemil Oyebisi
quelle
Beeindruckend. Ich finde es toll, wie das falsche Passwort gespeichert wird, wenn Sie es falsch eingeben. Dann müssen Sie es manuell aktualisieren oder löschen
Kolob Canyon
10

In Windows kann dies vorkommen, wenn Sie zuvor andere Anmeldeinformationen gespeichert haben. Gehen Sie zum Credential Manager und löschen Sie gespeicherte Github-Anmeldeinformationen

Zufällig
quelle
1
Es ist auch möglich, das Kennwort im Windows-Anmeldeinformations-Manager direkt auf das neue Kennwort zu bearbeiten.
Spenhouet
8

Das gleiche passierte mit mir, als ich die 2-Wege-Authentifizierung für Github aktiviert habe. Dinge, die ich getan habe, um zu lösen:

  • Holen Sie sich Ihren persönlichen Zugriffstoken. Dies müssen Sie überprüfen und generieren, falls es noch nicht verfügbar ist. Link dazu: https://github.com/settings/tokens
  • Gehen Sie zu Ihrem lokalen Ordner und löschen Sie den Ordner und klonen Sie den Zweig erneut von Github.
  • Versuchen Sie nun den Befehl, den Sie zuvor versucht haben, dh: git pull origin master
  • Geben Sie den Benutzernamen ein und fügen Sie im Passwort das ein generierte Token ein. Vergessen Sie auch nicht, das Token irgendwo zu speichern, damit Sie es bei Bedarf wiederverwenden können.

Dadurch wird Ihr Problem gelöst.

Palak
quelle
Gutes Callout - das passierte mir auf dem Mac => musste meine PAT
SliverNinja - MSFT
Wir müssen das Token generieren, wenn wir Berechtigungen benötigen, die in zuvor generierten Token nicht vorhanden sind. Auch wenn wir unser vorheriges Token verloren haben, können wir dieses neue Token generieren und anstelle unseres ursprünglichen Git-Passworts als Passwort zur Authentifizierung verwenden.
Mohd Belal
5

Nur für den Fall, dass dies auch anderen hilft, wurde ich bei der Mac-App angemeldet, die Befehlszeile funktioniert einwandfrei, aber da ich dann 2FA aktiviert habe, haben meine Befehle den Fehler zurückgegeben. Ich musste mich von der App abmelden, dann konnte ich mein persönliches Zugriffstoken in meinen Befehlen gemäß der Antwort von ele hier verwenden .

Hoffentlich hilft das jemandem!

Joel Balmer
quelle
-2

Unter Windows werden Sie möglicherweise stillschweigend von Ihrer Antivirus- oder Windows-Firewall blockiert. Schalten Sie diese Dienste vorübergehend aus und drücken / ziehen Sie vom Remote-Ursprung.

Wirbel
quelle