Niepowodzenie uwierzytelniania GitHub przez https, zwracanie nieprawidłowego adresu e-mail


128

Inicjowanie wypychania lub jakiejkolwiek innej akcji za pomocą GitHub z wiersza poleceń (przez https, nie ssh), która wywołuje nazwę użytkownika i hasło, nie tylko kończy się niepowodzeniem, ale kiedy to się dzieje, zwraca

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/'

Nie mam @github.comadresu. Hasło i nazwa użytkownika są poprawne.

Wiem, że mogę przełączyć się na SSH i używać kluczy, ale to nie wyjaśnia, dlaczego uwierzytelnianie kończy się niepowodzeniem przez https.


Dokumentacja git-scm.com/book/en/... git-config - Pobierz i ustaw repozytorium lub opcje globalne git-scm.com/docs/git-config
John Smith

Odpowiedzi:


171

Wsparcie GitHub od razu określiło źródło problemu: autoryzacja dwuskładnikowa.

Aby korzystać z GitHub w powłoce z protokołem https, utwórz token OAuth . Jak zauważa strona, musiałem usunąć moją nazwę użytkownika i hasło z pęku kluczy, ale osx-keychainpo wprowadzeniu token jest przechowywany jako hasło i rzeczy działają dokładnie tak, jak działałyby przez https bez autoryzacji dwuskładnikowej.


4
+1. Możesz także użyć PAT (Personal Access Token) w zaszyfrowanym netrc: stackoverflow.com/a/18607931/6309
VonC,

Jaka jest różnica między PAT a OAuth?
lindhe

@lindhe Token OAuth to typ tokenu, a PAT jest w tym przypadku tokenem OAauth.
Kerry Jones

22

Nie mam @github.comadresu

Nie musisz: to @jest separatorem między nazwą użytkownika: hasłem i domeną.
To nie jest adres e-mail.

Pełny adres URL https w serwisie GitHub wyglądałby tak:

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

Bez hasła (które będzie wtedy zadawane w linii poleceń), to dałoby:

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

Ale znowu username@github.comnie jest to adres e-mail, tylko pierwsza część danych logowania.

Upewnij się, że wielkość liter usernamei reponamejest poprawna: rozróżniana jest wielkość liter .

Pamiętaj, że możesz przechowywać i szyfrować swoje dane uwierzytelniające w .netrc.gpg(lub _netrc.gpgw systemie Windows), jeśli nie chcesz, aby te dane logowania były jawne w adresie URL.
Zobacz „ Czy istnieje sposób na pominięcie wpisywania hasła podczas używaniahttps://github ”.


Możesz również pozostawić hasło, wpisując je za każdym razem. W takim razie byłoby https://username@github.com/username/reponame.git.
Mark Hildreth,

Och, to ma sens. Dziękuję Ci. Wiedziałem o rozróżnianiu wielkości liter i jestem pewien, że nazwa użytkownika i hasło, które podam, są poprawne. (Działają dobrze, aby zalogować się na stronie internetowej). A
ele

2
@ele tak, ale czy Twoje hasło zawiera znaki specjalne (np. ! * ' ( ) ; : @ & = + $ , / ? # [ ])? Muszą być zakodowane w procentach ( en.wikipedia.org/wiki/Percent-encoding ).
VonC,

Hasło jest alfanumeryczne. Zobaczę, co daje 'git remote -v', kiedy będę następny przy maszynie, ale wygląda na to, że być może będę musiał skontaktować się z pomocą techniczną GitHub w następnej kolejności.
ele

@ele najpierw wypróbuj podejście .netrc (nawet nie szyfruj, tylko do testowania). Jeśli to nie zadziała, obsługa GitHub jest rzeczywiście następnym krokiem.
VonC

21
  • Idź do Credential Manager => Windows Manager
  • Usuń wszystko związane z tfs
  • Teraz kliknij Dodaj ogólne poświadczenie i podaj następujące wartości

    (1) Adres internetowy lub sieciowy: git: https: //tfs.donamain name (2) nazwa użytkownika: twoja nazwa użytkownika (3) hasło: twoje hasło

    to powinno to naprawić


łał. Uwielbiam sposób, w jaki przechowuje nieprawidłowe hasło, jeśli wpiszesz je nieprawidłowo. Następnie musisz przejść ręcznie zaktualizować lub usunąć
Kolob Canyon

10

Może się to zdarzyć w systemie Windows, jeśli wcześniej zapisałeś inne poświadczenia. Przejdź do Menedżera poświadczeń i usuń zapisane poświadczenia github


1
Istnieje również możliwość bezpośredniej edycji hasła w Menedżerze poświadczeń systemu Windows na nowe hasło.
Spenhouet


8

To samo stało się ze mną, gdy włączyłem uwierzytelnianie dwukierunkowe dla github. Rzeczy, które zrobiłem, aby rozwiązać:

  • Zdobądź osobisty token dostępu. Musisz to sprawdzić i wygenerować, jeśli nie jest jeszcze dostępne. Link do tego: https://github.com/settings/tokens
  • Przejdź do swojego lokalnego folderu i usuń folder, a następnie ponownie sklonuj gałąź z github.
  • Teraz wypróbuj polecenie, które próbowałeś wcześniej, np .: git pull origin master
  • Wprowadź nazwę użytkownika i hasło wklej wygenerowany token, a także nie zapomnij gdzieś go zapisać, aby w razie potrzeby można go było ponownie użyć.

Takie postępowanie rozwiąże Twój problem.


Dobre powiadomienie - to się działo ze mną na mac => musiałem zregenerować mój PAT
SliverNinja - MSFT

Musimy wygenerować token, jeśli potrzebujemy uprawnień, których nie było w poprzednich wygenerowanych tokenach. Jeśli zgubiliśmy nasz poprzedni token, możemy wygenerować ten nowy token i użyć go jako hasła do uwierzytelnienia zamiast naszego oryginalnego hasła git.
Mohd Belal

6

Na wypadek, gdyby to pomogło również komukolwiek innemu, zostałem zalogowany do aplikacji na Maca, linia poleceń działa dobrze, ale ponieważ potem włączyłem 2FA, moje polecenia zwracały błąd. Musiałem wylogować się z aplikacji, a następnie mogłem używać osobistego tokena dostępu w moich poleceniach zgodnie z odpowiedzią ele tutaj .

Mam nadzieję, że to komuś pomoże!


-2

W systemie Windows możesz być dyskretnie blokowany przez program antywirusowy lub zaporę systemu Windows. Tymczasowo wyłącz te usługi i wypychaj / ściągaj ze zdalnego źródła.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.