Git push powoduje „Błąd uwierzytelnienia”

704

Używam github na chwilę i byłem w porządku git add, git commiti git pushdo tej pory bez żadnych problemów. Nagle pojawia się błąd:

fatal: Uwierzytelnienie nie powiodło się

W terminalu sklonowałem repozytorium, pracowałem nad plikiem, a następnie dodałem go git adddo dziennika zmian, a kiedy to zrobiłem git commit, działało dobrze. Na koniec git pushprosi o nazwę użytkownika i hasło. Wkładam je poprawnie i za każdym razem, gdy to robię, pojawia się ten sam błąd.

Czy ktoś ma pojęcie, co jest przyczyną tego problemu i jak mogę go naprawić?

Zawartość .git/configto:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = http://www.github.com/######/Random-Python-Tests
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[user]
        name = #####
        email = ############
Zkirkland
źródło
jaka jest twoja nazwa użytkownika na github i jaka jest zawartość .git / config?
mnagel
dodaj to do pytania, komentarze nie radzą sobie z długim tekstem
mnagel
Tak przepraszam, zacząłem komentarz z przyzwyczajenia, a potem go zmieniłem.
zkirkland
Twój adres URL wygląda nieprawidłowo. Myślę, że powinno rozpocząć https://, nie http://.
John Szakmeister
Zmieniono na https ... nie działało.
zkirkland

Odpowiedzi:

1201

Jeśli włączyłeś uwierzytelnianie dwuskładnikowe na swoim koncie Github, nie będziesz mógł przesyłać danych przez HTTPS przy użyciu hasła do swojego konta. Zamiast tego musisz wygenerować osobisty token dostępu. Można to zrobić w ustawieniach aplikacji konta Github. Użycie tego tokena jako hasła powinno umożliwić wypychanie do zdalnego repozytorium za pośrednictwem HTTPS. Użyj swojej nazwy użytkownika jak zwykle.

https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/

Może być również konieczne zaktualizowanie źródła dla repozytorium, jeśli ustawiono opcję https:

git remote -v 
git remote remove origin 
git remote add origin [email protected]:user/repo.git  
rc0r
źródło
5
W rzeczy samej. +1. Przedstawiam PAT tutaj stackoverflow.com/a/19223896/6309 i opisuję tam proces: stackoverflow.com/a/18607931/6309
VonC
3
Musiałem świeżo wygenerować klucze rsa, aby normalne operacje Git działały po włączeniu 2FA.
R11G
5
Dziękuję Ci! Właśnie miałem ten błąd i to pomogło, tylko wskazać. Po utworzeniu osobistego tokena dostępu skopiujesz go, a następnie podczas wypychania repozytorium poprosi o podanie nazwy użytkownika i hasła. Wklej token dostępu do hasła
pourmesomecec
87
możesz także zrobić, git remote add origin https://username:[email protected]/username/repo.gitaby przechowywać swój osobisty token dostępu.
mailmindlin
2
Dla mnie wszystko, co musiałem zrobić, to włączyć uwierzytelnianie SSH z mojego komputera lokalnego na moim koncie GitHub, a następnie przełączyć się na zdalny adres ssh git; help.github.com/articles/changing-a-remote-s-url
user5359531
601

Spróbuj wykonać następujące kroki, aby edytować lub usunąć zapisane poświadczenia:

  1. Kliknij Start
  2. Wpisz: Credential Manager (w Windows 10 jest to w „Start-> Ustawienia”. Następnie wyszukaj „Credential Manager”)
  3. Zobacz Windows Credentials Managerskrót i kliknij go dwukrotnie, aby otworzyć aplikację.
  4. Po otwarciu aplikacji kliknij Windows Credentialskartę.
  5. Znajdź poświadczenia, które chcesz usunąć / zaktualizować, zaczną się od „git:” i mogą zaczynać się od „ada:”
  6. Kliknij pozycję poświadczenia, otworzy się widok szczegółów wpisu.
  7. Kliknij Edytuj lub Usuń zgodnie z wymaganiami i potwierdź.
  8. Umyć, spłukać, powtórzyć w razie potrzeby.

wprowadź opis zdjęcia tutaj

Pradeep
źródło
2
W moim przypadku nie ma go w „Poświadczeniach systemu Windows”, ale w „Poświadczeniach ogólnych”. Usuń poświadczenie załatwić sprawę.
Toni Gamez
8
Możesz otworzyć powyższe okno poprzez (Windows + R) -> „control / name Microsoft.CredentialManager”
Sufiyan Ansari
Poświadczenia mogą tam być, ale bez „git:” przed nim. To nie zadziała. Musi zaczynać się od „git:”
Marques,
1
Mój pracodawca ustawił uwierzytelnianie systemu Windows na Git Hub, więc za każdym razem, gdy zmieniałem poświadczenia systemu Windows, musiałem je aktualizować w celu kontroli źródła. Twoja odpowiedź zadziałała.
shary.sharath
1
Fantastyczna odpowiedź. Prowadzimy wewnętrzne repozytorium BitBucket, w którym każde z poświadczeń naszego konta jest uwierzytelniane w naszej organizacji. Ostatnio wszystkie moje repozytoria stały się niedostępne do wypychania zmian w kodzie. Chociaż byłem w stanie zmienić dane uwierzytelniające dla poszczególnych przypadków, naprawdę nie chciałem tego robić dla każdego projektu. Podejście @ Pradeep pozwoliło mi rozwiązać podstawową przyczynę, która była czymś więcej niż zwykłą zmianą hasła. Nasza organizacja niedawno zmieniła nazwę domeny wewnętrznej, więc edytując poświadczenia centralnie mogłem naprawić wszystkie moje projekty.
Michael M,
79

To działało dla mnie i zapamiętuje moje dane uwierzytelniające:

  1. Uruchom gitbash

  2. Wskaż katalog repo

  3. Biegać git config --global credential.helper wincred

Utukku
źródło
18
Zajęło mi trochę czasu, aby dowiedzieć się, co to robi - używa Credential Manager w Panelu sterowania systemu Windows. Aby przestać go używać: git config –global credential.helper unset Źródło i więcej szczegółów w tej odpowiedzi .
Ian W
7
@IanW Masz na myśli git config --global --unset credential.helper? To działało dla mnie w Git Bash.
Ellen Spertus
1
Uważaj na to polecenie, ponieważ zastąpi ono prawdziwą ścieżkę do twojego pomocnika poświadczeniem po prostu „wincred”, który najwyraźniej nie jest potrzebny.
amarax
2
Uruchomiłem to polecenie, aby dowiedzieć się, że nie tego chciałem. Właściwy sposób na rozbrojenie to git config --global --unset credential.helper. Ostatecznie przywróciłem prawidłowe ustawienie za pomocą git config credential.helper store.
Omar,
To mi pomaga! Dzięki!
Jefsama,
69

Czy ostatnio zmieniłeś hasło do swojego konta git? Możesz wypróbować opcję git pushwith-u

git push -u origin branch_name_that_you_want_to_push

Po wykonaniu powyższej komendy poprosi o podanie hasła i zaktualizowanego hasła

Mam nadzieję, że może ci to pomóc

Users9949
źródło
działa to, co moje środowisko potrzebuje httpstylko
BMW
1
Z pewnością dużo łatwiej niż większość odpowiedzi. (A zmiana hasła powinna być najczęstszym powodem pojawienia się błędu uwierzytelnienia ;-))
Michel,
jeśli doświadczasz tego na istniejącym klonie - zrób togit push -u
Ajay Chebbi
64

Po pierwsze, możesz upewnić się, że używasz właściwego adresu URL:

git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git

Następnie, jeśli działało to wcześniej i jeśli nie wymagało podania nazwy użytkownika, musi to być spowodowane tym, że zapisałeś swoje dane uwierzytelniające (login / hasło) w $HOME/.netrcpliku, jak wyjaśniono tutaj . Możesz dokładnie sprawdzić te ustawienia i upewnić się, że Twój serwer proxy, jeśli go masz, nie zmienił się.

Jeśli to nadal nie działa, możesz przełączyć się na adres URL ssh:

git remote set-url origin [email protected]:zkirkland/Random-Python-Tests.git

Ale to oznacza, że ​​opublikowałeś swój klucz publiczny ssh w ustawieniach konta .

VonC
źródło
9
Przejście z HTTPS na SSH rozwiązało problem dla mnie.
leymannx,
3
Włączyłem uwierzytelnianie dwuskładnikowe dla mojego konta GH i przełączenie zdalnego adresu URL na SSH z HTTPS rozwiązało dla mnie problem „nieudanego uwierzytelnienia”. Ma sens. Dzięki!
Walter Roman
55

Dzieje się tak, jeśli zmienisz login lub hasło do konta usługi git (Git). Trzeba to również zmienić w Menedżerze poświadczeń systemu Windows . wpisz „Credential Manager” w menu wyszukiwania systemu Windows otwórz go.

Menedżer poświadczeń systemu Windows-> poświadczenia systemu Windows i w sekcji Ogólne poświadczenia edytuj swoje hasło do git.

Atif AbbAsi
źródło
4
To mnie uratowało podczas pracy z GitLabem (kiedy właściwie nic innego nie pomogło). Dzięki!
John Humphreys - w00te
2
Nigdy nie słyszałem o tym menedżerze poświadczeń systemu Windows .... Dzięki!
Sam
1
Podałem nieprawidłowe dane uwierzytelniające, gdy Git poprosił mnie o identyfikator użytkownika i hasło podczas wypychania nowych plików do zdalnego repozytorium. Kiedy ponownie uruchomiłem polecenie push, git nie pytał mnie o poświadczenia, ale zamiast tego tylko rzucał błąd uwierzytelnienia. Po przeczytaniu tej odpowiedzi zdałem sobie sprawę, że git używa poświadczeń przechowywanych w menedżerze poświadczeń i to powinien być powód, dla którego git nie wyświetla hasła za każdym razem, gdy pchamy się do zdalnego repozytorium. Usunąłem hasło git w menedżerze poświadczeń, po czym git ponownie poprosił mnie o identyfikator użytkownika i hasło.
Jchenna
41

Zasadniczo moje dane uwierzytelniające wygasły i stanąłem przed powyższym problemem.

Następujące 2 polecenia pomogły mi:

git config --global --unset credential.helper

git config credential.helper store

Przy następnej próbie wypchnięcia poprosi Cię o podanie poświadczeń.

Postępuj zgodnie z poniższymi wytycznymi, aby uzyskać więcej informacji na temat bezpiecznego i niezabezpieczonego przechowywania nazwy użytkownika i hasła:

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

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

Jems
źródło
To działało dla mnie po zmianie hasła w Github i nie zmieniłem moich danych uwierzytelniających lokalnie.
Scott
33

Jeśli znalazłeś problem z błędem uwierzytelnienia po wprowadzeniu poprawnego hasła i nazwy użytkownika, to problem z git. Aby rozwiązać ten problem podczas instalowania narzędzia git na komputerze, odznacz opcję Włącz menedżera poświadczeń gitwprowadź opis zdjęcia tutaj

Hoque MD Zahidul
źródło
1
To rozwiązało mój problem
1929819
naprawiłem też mój. Stukrotne dzięki!
Brian Edwards,
Nie znajduję tego typu rozwiązania. Zainstalowałem git
Hoque MD Zahidul
Naprawiłem też moje problemy (git został zainstalowany, po prostu ponownie go zainstalowałem, co odznaczało to: i jest w porządku!)
Manatlan
1
Musiałem też zaznaczyć „Użyj natywnej biblioteki Windows Secure Channel”. Domyślnie nie jest zaznaczone.
doptrois,
25

Myślę, że z jakiegoś powodu GitHub oczekuje, że adres URL NIE będzie mieć poddomeny www. Kiedy używam (na przykład)

git remote set-url origin https://www.github.com/name/repo.git

daje następujące komunikaty:

remote: Anonymous access to name/repo.git denied
fatal: Authentication failed for https://www.github.com/name/repo.git

Jeśli jednak użyję

git remote set-url origin https://github.com/name/repo.git

działa idealnie dobrze. Nie ma to dla mnie zbyt dużego sensu ... ale chyba nie umieszczam www w zdalnym adresie URL repozytoriów GitHub.

Zauważ też, że sklonowane adresy URL podane na stronie repozytorium GitHub nie zawierają www.

Electo
źródło
4
Nie umieszczanie „www” na „github.com” działa. Ponieważ to ma znaczenie, Github powinien naprawić swoją stronę, aby nie można było klonować za pomocą „www”.
John Nagle
1
Dziękuję:) W moim adresie URL brakowało pliku .git, a ten komentarz skłonił mnie do obejrzenia go i znalezienia.
19

Cześć, otrzymywałem ten sam błąd, wypróbowałem wszystkie rozwiązania wymienione w tej stronie, ale nie działały. Wreszcie znalazłem rozwiązanie, więc pomyślałem o opublikowaniu go. Proszę mnie poprawić, jeśli gdziekolwiek się mylę. Tego rodzaju błędy pojawiają się, jeśli czasami hasło systemowe ostatnio się zmieniło. Spróbuje zweryfikować na podstawie starego hasła. Wykonaj następujące kroki:

  1. Przejdź do panelu sterowania
  2. Kliknij konta użytkowników
  3. W obszarze Menedżer poświadczeń
  4. Przejdź do Zarządzaj poświadczeniami systemu Windows
  5. Przejdź do poświadczeń ogólnych
  6. Rozwiń kartę serwera git
  7. kliknij Usuń z przechowalni

    • Możesz także kliknąć edytuj i bezpośrednio zmienić swoje hasło tutaj zapisane.
Kamala Hanchinal
źródło
10

Natknąłem się na „$ git fetch fat: Uwierzytelnianie nie powiodło się dla„ http: // .... ”po wygaśnięciu i zmianie hasła do mojego systemu Windows. Wiele pobrań, restartowanie, a nawet ponowna instalacja git za pomocą menedżera poświadczeń systemu Windows nie pomogły.

Zaskakująco właściwa odpowiedź gdzieś tutaj w komentarzach, ale nie w odpowiedziach (a niektóre z nich są naprawdę dziwne!). Musisz przejść do Panelu sterowania -> Credential Manager / Windows Credentials i zaktualizować hasło do git: http: // yourrepoaddress

amarax
źródło
9

Nie jestem pewien, co zrobiłem, aby uzyskać ten błąd, ale wykonuję:

git remote set-url origin https://...

nie działało dla mnie. Jednak:

git remote set-url origin [email protected]:user/repo

jakoś działało.

Kafeaulait
źródło
3
Przeszedłeś z https na ssh
James Wierzba,
To też działa dla mnie. To nie jest magia, to dlatego, że mam zapisaną konfigurację dostępu ssh (ze skonfigurowanym kluczem publicznym), które nie są odbierane dla dostępu https (czyli użytkownik / hasło + MFA).
Daniel Dubovski,
8

Miałem ten sam problem. Ustawiam adres URL w ten sposób:

git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git

Ja również usunąć z pliku konfiguracyjnego tego wpisu: askpass = /bin/echo. Potem „git push” poprosił mnie o nazwę użytkownika i hasło i tym razem zadziałało.

Bartosz
źródło
I nie trzeba było usunąć z pliku konfiguracyjnego tego wpisu: askpass = /bin/echo.
Darius Miliauskas
5

W moim przypadku niedawno zmieniłem hasło do systemu Windows i skonfigurowałem klucz SSH do akcji związanych z git (pobieranie, wypychanie, pobieranie itp.), Po napotkaniu błędu „fatal: Authentication failed” zaktualizowałem hasło w systemie Windows menedżer poświadczeń (Panel sterowania \ Konta użytkowników \ ​​Menedżer poświadczeń) dla wszystkich elementów zaczynających się od git: ... i spróbowałem ponownie, tym razem zadziałało!

Kiran Modini
źródło
3

Jeśli włączyłeś uwierzytelnianie dwuskładnikowe na swoim koncie Github, zaloguj się na swoje konto GitHub i przejdź do: https://github.com/settings/tokens/new, aby wygenerować nowy token dostępu, skopiuj ten token i wklej jako hasło do uwierzytelnienia w terminalu.

RegarBoy
źródło
2

Jeśli korzystasz z systemu Windows i próbujesz przekazać serwer Windows, na którym użytkownicy domeny pracują jako użytkownicy repozytorium (TFS), spróbuj dostać się do adresu URL TFS (tj. http:\\tfs) Za pomocą IE. wprowadź dane logowania do konta domeny i pozwól, aby strona się pojawiła.

UWAGA używaj tylko INTERNET EXPLORER! inne przeglądarki nie zmienią danych logowania do systemu.

Teraz przejdź do git bash i zmień zdalnego użytkownika dla repozytorium, jak poniżej:

git config user.name "domainName\userName"

I gotowe, teraz możesz naciskać!

AmiNadimi
źródło
1

Dla mnie zapomniałem, że zmieniłem hasło na Github.com, a mój brelok do uwierzytelniania powłoki nigdy nie był aktualizowany do tego nowego hasła. Usunięcie wszystkiego git z mojego pęku kluczy, a następnie ponowne uruchomienie żądania git pomogło rozwiązać problem, ponownie prosząc mnie o nowe hasło.

MMMdata
źródło
1

Żeby się tu włączyć, tym, co naprawiło problem, było to, że po prostu skasowałem z początkowego monitu, ssh otworzył się z moim kontem bitbucket, podałem tam hasło i wszystko działało zgodnie z oczekiwaniami.

Trevor Hart
źródło
1

Ten sam problem dotyczyłem systemu Windows. Zwykle spotykam się z tym problemem z powodu korzystania z wielu kont git. Jeśli korzystasz z systemu Windows, otwórz terminal jako administrator i spróbuj ponownie uruchomić polecenia. Upewnij się, że masz prawa dostępu administratora.

Muema
źródło
1

Dodałem do Bitbucket połączonego z Gitem i musiałem usunąć zapisane klucze, ponieważ to spowodowało błąd krytyczny.

Aby rozwiązać, otworzyłem wiersz polecenia i uruchomiłem

 rundll32.exe keymgr.dll, KRShowKeyMgr

Usunąłem klucz, który był odpowiedzialny za zalogowanie się i następnym razem wypchnąłem pliki do repozytorium, poproszono mnie o podanie poświadczeń i wprowadziłem poprawne, co skutkowało pomyślnym wypchnięciem.

William Humphries
źródło
0

Wpadłem również na błąd (dlatego tu wylądowałem), ale żadna z sugestii nie zadziałała. To był mój pierwszy raz, kiedy próbowałem wdrożyć lokalnego Gita na lazur. Gdy pojawia się ten błąd, po kilku próbach resetuję poświadczenia (klikając łącze na platformie Azure). Problem polega na tym, że w tym momencie mówi mi, że moja nazwa użytkownika jest już zajęta, więc zmieniłem również nazwę użytkownika na inną. Na koniec ręcznie usunąłem folder .git z dysku lokalnego i wdrożyłem go bez problemu.

nowego człowieka
źródło
0

Komunikat o problemie: „Nieudane uwierzytelnienie git nie powiodło się”. Używam bitbucket.

Rozwiązanie: po prostu usunąłem użytkownika z zarządzania dostępem do bitbucket, a następnie dodałem tego samego użytkownika. Plik .gitconfig jest prosty

[user]
    name = BlaBla
    email = [email protected]

[push]
    default = simple
J4cK
źródło
0

z prawidłowymi poświadczeniami, jeśli problem występuje

jeśli używasz androidstudio 2.1 beta, to jego błąd, uaktualnij do wersji beta 2 (plik aktualizacji 3 MB), to zadziałało dla mnie

geniushkg
źródło
0

Upewnij się, że masz ZAPISZ uprawnienia do przesyłania.

read ***write*** admin 
Lay Leangsros
źródło
0

Upewnij się, że Twój klucz ssh został dodany do bieżącej sesji ssh.

  1. Skopiuj dane wyjściowe cat ~/.ssh/id_rsa.pubdo ustawień GitHub pod kluczami SSH i GPG.

  2. Zaktualizuj swoją bieżącą sesję ssh za pomocą ssh-add ~/.ssh/id_rsa.pub

Używam Windows Powershell z zainstalowanym openssh.

Piotr
źródło
0

w Android Studio Canary build 3.1+, jeśli używasz narzędzia Android Git Studio, możesz użyć następujących opcji:

  • Kliknij Android Studio
  • Kliknij Preferencje ...
  • GO w VersionControl -> Github
  • Tutaj Zmień typ uwierzytelnienia na hasło
  • Ten krok wymaga podania loginu i hasła. Wpisz nazwę użytkownika github jako login i hasło github jako hasło.
  • Kliknij przycisk Test.

Jeśli połączenie zakończy się powodzeniem, możesz to zrobić i możesz użyć klienta interfejsu użytkownika github dla studia Android.

Tarun
źródło
0

Jeśli używasz ssh i sklonowałeś za pomocą https, to nie zadziała. Klonowanie za pomocą ssh, a następnie push i pull powinno działać zgodnie z oczekiwaniami!

GoldenWest
źródło
0

W przypadku, gdy jest to stycznie pomocne, ponieważ pytanie to jest obecnie największym hitem w przypadku problemów z uwierzytelnianiem HTTP w git: Menedżer poświadczeń systemu Windows poprawnie zapisał moje hasło, a ponieważ korzystałem z Git LFS, skonfigurowałem adres URL http zamiast zwykłego ssh: / / .

Mój problem polegał na tym, że moje zasady haseł firmowych wymusiły zmianę hasła do konta, ale nigdy nie aktualizowałem przechowywanych poświadczeń (ponieważ zawsze używam klucza ssh).

Po prostu aktualizacja hasła bezpośrednio w graficznym interfejsie użytkownika programu Wincred działała: wystarczy wyszukać git:https://<your-url>wpis.

msanford
źródło
0

Stało się tak po wymuszeniu „uwierzytelnienia dwuskładnikowego” przed zalogowaniem z Gitlab. Musieliśmy wkleić tekst wewnątrz id_rsa.pub do Gitlab, a następnie ponownie wprowadzić repozytorium w kodzie VS za pomocą terminala.

Onat Korucu
źródło