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://[email protected]': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://[email protected]/eurydyce/MDANSE.git/'

Jednak ustawienie mojego klucza ssh na github wydaje się być w porządku. Rzeczywiście, kiedy to robię ssh -T [email protected], 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?

Eurydice
źródło
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: //[email protected]/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://[email protected]:eurydyce/MDANSE.gitlub po prostu[email protected]:eurydyce/MDANSE.git

git remote set-url origin [email protected]:eurydyce/MDANSE.git

OP Pellegrini Eric dodaje:

Tak zrobiłem w moim ~/.gitconfigpliku, który zawiera obecnie następujące wpisy[remote "origin"] [email protected]: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.

VonC
źródło
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://[email protected]': 
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

Oliver
źródło
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ć
amoljdv06
źródło
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.

Ahmad Awais
źródło
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://[email protected]/username/repository.git, to trzeba zaprogramować nazwę użytkownika Git będzie używany do uwierzytelniania: something. Odkąd użyłeś https://[email protected], 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: [email protected]:username/repository. Aby zaktualizować adres URL, użyj tego polecenia:

git remote set-url origin [email protected]:username/repository
szturchać
źródło
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"] [email protected]: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.

Shiva Rajkumar
źródło
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ć

Paweł
źródło
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 [email protected]:username/repository

Divyanshu Rawat
źródło
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

prachit
źródło
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 ...

GreenAsJade
źródło
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.

ZaMy
źródło
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.

BiAiB
źródło
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.

Paras saini
źródł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 [email protected]:YourName/RepoName.gitw ustawieniach repozytorium aplikacji klienckiej.

Olga Kliushkina
źródło
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 ..

Arthur Bowers
źródło
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

Dwyer
źródło
-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.

Ajay Deepak
źródło
-1

Po prostu wyłączam uwierzytelnianie dwuskładnikowe i próbuję ponownie. Mi to pasuje.

Muhammad Awais
źródło
-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ć
Sandesh Jayaprakash
źródło
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