GitHub: nieprawidłowa nazwa użytkownika lub hasło


401

Mam projekt hostowany na GitHub. Nie udaje mi się, gdy próbuję pchnąć moje modyfikacje na master. Zawsze pojawia się następujący komunikat o błędzie

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

Jednak ustawienie mojego klucza ssh na github wydaje się być w porządku. Rzeczywiście, kiedy to robię ssh -T git@github.com, dostaję

Hi eurydyce! You've successfully authenticated, but GitHub does not provide shell access.

Co wydaje się wskazywać, że z tej strony wszystko jest w porządku (eurydyce to moja nazwa użytkownika github). Ściśle przestrzegałem instrukcji podanych na github i zaleceniach wielu dyskusji o stosach, ale nie ma mowy. Czy miałbyś pojęcie o tym, co mogłem zrobić źle?


Nie jestem pewien, czy powinienem opublikować odpowiedź, czy nie (głosowanie z dużym prawdopodobieństwem), ponieważ rozwiązałem ten komunikat o błędzie, zmieniając hasło w ustawieniach github po wielu próbach podania hasła „poprawnego” (sprawdź przez element sprawdzający).
Fruit

Odpowiedzi:


274

https: //git@github.com/eurydyce/MDANSE.git nie jest adresem ssh, jest adresem https (który wymagałby nazwy twojego konta GitHub zamiast „ git”).

Spróbuj użyć ssh://git@github.com:eurydyce/MDANSE.gitlub po prostugit@github.com:eurydyce/MDANSE.git

git remote set-url origin git@github.com:eurydyce/MDANSE.git

OP Pellegrini Eric dodaje:

Tak zrobiłem w moim ~/.gitconfigpliku, który zawiera obecnie następujące wpisy[remote "origin"] url=git@github.com:eurydyce/MDANSE.git

Nie powinno to być w twojej globalnej konfiguracji (tej w ~/).
Można sprawdzić git config -lw swoim repo: że url powinny być zadeklarowane w lokalnym config: <yourrepo>/.git/config.

Podczas wykonywania git remote set-urlpolecenia upewnij się, że jesteś na ścieżce repozytorium .


Jak zauważono w Oliver „s odpowiedzi , HTTPS URL nie będzie używać nazwy użytkownika / hasła, jeśli uwierzytelnianie dwuskładnikowe (2fa) jest aktywna.

W takim przypadku hasłem powinien być PAT (osobisty token dostępu), jak widać w „ Korzystanie z tokena w wierszu poleceń ”.

Dotyczy to tylko adresów URL HTTPS, ograniczenie to nie dotyczy SSH.


oups! Masz rację, wprowadzenie tych zmian w mojej lokalnej konfiguracji sprawiło, że wszystko działało. Wielkie dzięki.
Eurydice

78
W ogóle nie rozumiem tej odpowiedzi
Cloud

1
@Clo jasne, która część nie jest jasna, jak mogę poprawić tę odpowiedź?
VCC

Miałem link klonujący https, który nie działał. Ale zastąpiłem git @ url i zaczął działać. Co mogłoby być tego przyczyną? Usunąłem również wpis github z pęku kluczy mac. Czy to może być powiązane? Korzystałem z niego za pośrednictwem ssh, konfigurując klucze. Wszelkie wskazówki będą w tym pomocne.
cg

1
@byronaltice Jeśli jest to SSH, oznacza to, że masz plik ~/.ssh/configlub %USERPROFILE%\.ssh\configplik z github.comwpisem.
VonC

1011

Po włączeniu Two Factor Authentication (2fa), można zobaczyć coś takiego podczas próby użycia git clone, git fetch, git pulllub git push:

$ git push origin master
Username for 'https://github.com': your_user_name
Password for 'https://your_user_name@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/your_user_name/repo_name.git/'

Dlaczego tak się dzieje

Z dokumentacji pomocy GitHub :

Po włączeniu 2FA musisz wprowadzić osobisty token dostępu zamiast kodu 2FA i hasła GitHub.

...

Na przykład, gdy masz dostęp do repozytorium przy użyciu Git w linii poleceń przy użyciu poleceń jak git clone, git fetch, git pulllub git pushz HTTPS, należy podać swoją nazwę użytkownika i osobiste GitHub token dostępu, gdy poproszony o podanie nazwy użytkownika i hasła. Wiersz polecenia nie określa, że ​​należy wprowadzić osobisty token dostępu, gdy prosi o hasło.

Jak to naprawić

  1. Wygeneruj osobisty token dostępu . (Szczegółowy przewodnik na temat tworzenia osobistego tokena dostępu dla wiersza poleceń ).
  2. Skopiuj token dostępu osobistego.
  3. Ponów próbę wykonania polecenia i użyj tokena dostępu osobistego zamiast hasła.

Powiązane pytanie: https://stackoverflow.com/a/21374369/101662


14
Kudo i głosy poparcia; potrzebowałem nowej generacji tokenów. Również; „Skopiuj kod” zawierał dodatkowe (nieprawidłowe) znaki, więc musiałem ręcznie wpisać swój .... 20 [?] cyfrowy losowy klucz.
th3byrdm4n 27.04.16

7
To był mój problem, po dodaniu uwierzytelnienia 2-czynnikowego, co podejrzewałem, jednak brakowało dokumentacji na ten temat. Dziękuję za odpowiedź!
Pogrindis,

11
@BeauSmith: To znacznie bardziej merytoryczna edycja, niż zwykle pozwalamy. Zasadniczo całkowicie przepisałeś tę odpowiedź. Zamiast tego proszę zamieścić to jako własną, osobną odpowiedź . Zobacz także: Co robisz, jeśli ktoś w zasadzie ponownie pisze całą odpowiedź?
Martijn Pieters

8
Pozwólmy wszystkim, aby decyzja o wycofaniu się lub nie została podjęta przez @Oliver tutaj - i tak jest doskonale uzasadniony argument
Flexo

10
Redaktor tutaj… Ponieważ wydaje się, że ludzie oznaczający tę odpowiedź jako poprawną (jak ja) przybywają na tę stronę z powodu problemu, który różni się nieco od zamierzonego przez pytającego, próbowałem dodać kilka terminów „sok Google” i uczynić odpowiedź bardziej wizualną atrakcyjne, aby inni szukający tego rozwiązania mogli je znaleźć. Próbujemy ulepszyć społeczność. 😀
Beau Smith

86

Kroki rozwiązania:

  1. Panel sterowania
  2. Menedżer poświadczeń
  3. Kliknij opcję Poświadczenia okna
  4. W sekcji Ogólne dane uwierzytelniające będzie git url, aktualizacja nazwy użytkownika i hasła
  5. Uruchom ponownie Git Bash i spróbuj sklonować

4
Miałem ten problem z wersją firmy github (więc używając lokalnej nazwy użytkownika / hasła). To rozwiązanie to naprawiło.
mkennedy

W nowych oknach możesz wyszukać „poświadczenia systemu Windows” lub podobne w swoim języku. Wyskoczy wynik i możesz wypróbować to rozwiązanie.
Charles Tempo

1
Idealne rozwiązanie dla lokalnego github, w którym firmy zobowiązują cię do korzystania z https
avi.elkharrat

56

Jeśli tak jak ja właśnie zaktualizowałeś hasło i pobiegłeś, git pushaby napotkać ten problem, to jest to bardzo łatwa poprawka.

Tylko dla użytkowników komputerów Mac. Musisz usunąć wpisy dostępu do pęku kluczy OSX dla GitHub. Możesz to zrobić przez terminal, uruchamiając następujące polecenia.

Usuwanie poświadczeń za pomocą wiersza polecenia

Za pomocą wiersza polecenia można użyć pomocnika poświadczeń bezpośrednio, aby usunąć wpis pęku kluczy.

Aby to zrobić, wpisz następujące polecenie:

git credential-osxkeychain erase
host=github.com
protocol=https

# [Now Press Return]

Jeśli się powiedzie, nic nie zostanie wydrukowane. Aby sprawdzić, czy to działa, spróbuj sklonować repozytorium z GitHub lub ponownie uruchom poprzednią akcję, jak w moim przypadku git push. Jeśli pojawi się monit o hasło, wpis pęku kluczy został usunięty.


2
W systemie Windows: git credential-wincred erase host = protokół github.com = https
Juan Uribe

Ten problem napotkałem na repozytorium BitBucket. Ta odpowiedź host=bitbucket.orgzamiast GitHub naprawiła go dla mnie.
gutch

26

Gdy używasz https://adresu URL do łączenia się ze zdalnym repozytorium, Git nie użyje SSH jako uwierzytelnienia, ale zamiast tego spróbuje podstawowego uwierzytelnienia przez HTTPS. Zwykle wystarczy użyć adresu URL bez nazwy użytkownika, nphttps://github.com/username/repository.git Git poprosi Cię o podanie zarówno nazwy użytkownika (nazwa użytkownika GitHub), jak i hasła.

Jeśli używasz https://something@github.com/username/repository.git, to trzeba zaprogramować nazwę użytkownika Git będzie używany do uwierzytelniania: something. Odkąd użyłeś https://git@github.com, Git spróbuje się zalogować przy użyciu gitnazwy użytkownika, dla której twoje hasło oczywiście nie działa. Więc będziesz musiał użyć swojego zamiast tego nazwy użytkownika.

Alternatywą jest użycie SSH do uwierzytelnienia. W ten sposób unikniesz konieczności ciągłego wpisywania hasła; a ponieważ wydaje się, że już działa, powinieneś z niego korzystać.

Aby to zrobić, musisz jednak zmienić swój zdalny adres URL, aby Git wiedział, że musi się połączyć przez SSH. Format jest to ten: git@github.com:username/repository. Aby zaktualizować adres URL, użyj tego polecenia:

git remote set-url origin git@github.com:username/repository

podczas próby polecenia otrzymuję następujący komunikat warning: remote.origin.url has multiple values. Może to wynikać z faktu, że mam już zdalny znacznik w moim pliku ~ / .gitconfig, który zawiera tę wartość [remote "origin"] url=git@github.com:eurydyce/MDANSE.git.
Eurydice

18

po prostu spróbuj ponownie pchnąć go do swojego oddziału. Spowoduje to ponowne podanie nazwy użytkownika i hasła, aby można było wprowadzić zmienione hasło. Aby nowe hasło zostało ponownie zapisane w pamięci podręcznej.


4
Nie jestem pewien, dlaczego otrzymało to opinię negatywną. W moim przypadku moje dane uwierzytelniające zostały zaktualizowane, a drugi git pushmonitował o odpowiednią aktualizację, jak wskazuje ta odpowiedź.
Cyfrowa trauma

Nie jestem pewien, co miałeś na myśli, to nie jest prośba o nowe poświadczenia do wykonania git push origin master...
Betlista

13

Zamiast git pullteż spróbowaćgit pull origin master

Zmieniłem hasło, a pierwsze polecenie dało błąd:

$ git pull
remote: Invalid username or password.
fatal: Authentication failed for ...

Potem git pull origin masterpoprosił o hasło i wydawał się aktualizować


7

Nie trzeba polegać na generowaniu osobistego tokena dostępu, a następnie próbowaniu korzystania z osobistego tokena dostępu zamiast hasła.

Szybka poprawka polega na ustawieniu zdalnego adresu URL tak, aby sshnie wskazywałhttps .

Zrób to git remote set-url origin git@github.com:username/repository


5

Otrzymuję to podczas klonowania aplikacji z bitbucket:

Cloning into 'YourAppName'...
Password for 'https://youruser id': 
remote: Invalid username or password

Rozwiązałem to. Tutaj musisz utworzyć hasło do swojego identyfikatora użytkownika

  1. Kliknij Twój profil i ustawienia Kliknij Twój profil i ustawienia

  2. Następnie utwórz hasło do aplikacji, wybierz nazwę, którą wygeneruje hasło, wklej to hasło do terminala Utwórz hasło do aplikacji


4

Dla mnie zadziałało wyłączenie uwierzytelniania dwuskładnikowego w github.

Widzę, że istnieje usunięta odpowiedź, która to mówi, z powodem usunięcia jako „nie odpowiada na pytanie”. Jeśli to działa, myślę, że odpowiada na pytanie ...


To dziwne. To samo stało się ze mną. Właśnie wyłączyłem uwierzytelnianie dwuskładnikowe i działa teraz dla mnie. :)
abhijeetps

To działało dla mnie od czerwca 2020 roku. Dzięki!
Gcamara14

4

Zrobiłem:

$git pull origin master

Następnie poprosił o [Nazwa użytkownika] i [Hasło] i wydaje się, że teraz działa dobrze.


To zadziałało dla mnie. Użyłem pobierania zamiast pobierania, ale i tak to nie ma znaczenia. Fajne!
atereshkov

2

W przypadku wyświetlenia tego komunikatu o błędzie w tej sytuacji:

  • za pomocą github dla przedsiębiorczości
  • using credential.helper = wincred w git config
  • przy użyciu poświadczeń systemu Windows, które ostatnio zmieniłeś

Następnie spójrz na tę odpowiedź: https://stackoverflow.com/a/39608906/521257

System Windows przechowuje poświadczenia w menedżerze poświadczeń, wyczyść je lub zaktualizuj.


1

Być może pojawia się ten błąd, ponieważ zaktualizowałeś hasło. Tak więc na terminalu najpierw upewnij się, że wyczyściłeś poświadczenia GitHub z pęku kluczy, a następnie wypchnij zmiany do repozytorium, terminal poprosi o nazwę użytkownika i hasło.


1

Miałem ten sam problem. I rozwiązałem to, zmieniając ścieżkę zdalnego oddziału z https://github.com/YourName/RepoNamena git@github.com:YourName/RepoName.gitw ustawieniach repozytorium aplikacji klienckiej.


1

Ciągle napotykam ten problem. Upewnij się, że ustawiłeś git --config user.name "", a nie swoje prawdziwe imię, co zrobiłem kilka razy ..


0

Ponieważ prawdopodobnie chcesz włączyć 2FA dla swojego konta, możesz skonfigurować klucz ssh, dzięki czemu nie będziesz musiał wpisywać poświadczeń Github za każdym razem, gdy będziesz chciał przekazać pracę do Github.

Wszystkie kroki konfiguracji ssh można znaleźć w dokumentacji . Po pierwsze, upewnij się, że nie masz obecnie żadnych kluczy ssh (id_rsa.pub itp.)$ ls -al ~/.ssh


-1
  1. Panel sterowania
  2. Menedżer poświadczeń
  3. Poszukaj opcji poświadczeń internetowych i poświadczeń systemu Windows
  4. w jednym z nich znajdziesz dane uwierzytelniające github, popraw je za pomocą poprawnych danych uwierzytelniających
  5. otwórz nową instancję git bash, powinieneś być w stanie wykonywać swoje polecenia git.

To działało dla mnie, byłem w stanie przyciągnąć i wcisnąć moje zdalne repozytorium.



-3

To rozwiązanie działało dla mnie:

  1. otwórz Panel sterowania
  2. Idź do Credential Manager
  3. Kliknij opcję Poświadczenia okna
  4. W sekcji Ogólne dane uwierzytelniające będzie git url, aktualizacja nazwy użytkownika i hasła
  5. Uruchom ponownie Git Bash i spróbuj sklonować

1
Ta odpowiedź powiela istniejącą odpowiedź, która nie jest użyteczna. Jeśli masz wystarczającą reputację (15, uważam), możesz głosować na odpowiedzi, które uważasz za przydatne. Głosowanie byłoby poprawną odpowiedzią zamiast dodawania tej duplikaty odpowiedzi.
AdrianHHH
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.