Właśnie włączyłem 2FA (nie przychodzą mi do głowy żadne inne zmiany, które wprowadziłem) i git poprosił o moją nazwę użytkownika i hasło. Podałem oba, ale były one „złe”. Wypróbowałem wiele rozwiązań tutaj: Git push wymaga nazwy użytkownika i hasła, ale to nie zadziałało. W szczególności przy przełączaniu z https na ssh klucz ssh daje
Odmowa pozwolenia (publickey). krytyczny: nie można odczytać ze zdalnego repozytorium.
$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)
Username for 'https://github.com': **********
Password for 'https://[email protected]':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/mlbileschi/scala.git/'
Jakieś wskazówki?
git
github
two-factor-authentication
Max Bileschi
źródło
źródło
Odpowiedzi:
Musisz wygenerować token dostępu. Możesz je utworzyć, przechodząc do strony ustawień .
Użyj tego tokena dostępu jako hasła w linii poleceń.
źródło
git pull
. Prawdopodobnie problem lokalny, ale może to komuś pomóc.The requested URL returned error: 403
gdy używam tokena jako hasła, do wypychania httpsKompleksowe rozwiązanie wymaga 3 kroków.
Uznanie dla Gergo Erdosi. Jego odpowiedź jest w dużej mierze poprawna, po prostu Github zmienia tę stronę ustawień. Od końca 2016 r. Musisz wygenerować token dostępu na swojej stronie osobistych tokenów dostępu .
Użyj tego tokena dostępu jako hasła w linii poleceń.
Możesz utrwalić swoją nazwę użytkownika, dołączając ją do zdalnego adresu URL projektu. Jednym ze sposobów na to jest edycja i
.git/config
zmodyfikowanieurl
linii do następującego formatu:url = https://[email protected]/owner/repo.git
Możesz utrwalić swoje hasło, uruchamiając to tylko raz:
$ git config credential.helper store
a następnie twoje przyszłe hasła git będą przechowywane w ~ / .git-credentials, w postaci zwykłego tekstu, w formacie
https://user:[email protected]
.Przechowywanie haseł w postaci zwykłego tekstu byłoby zwykle uważane za zagrożenie bezpieczeństwa. Ale w tym przypadku 2FA poświadczenie NIE jest Twoim prawdziwym hasłem, jest to losowo wygenerowany ciąg. Jest to więc tak samo bezpieczne, jak użycie
klucza prywatnego ssh i klucza prywatnego SSHbez hasła. OSTRZEŻENIE: pamiętaj, że jeśli zdarzy ci się użyć innego konta (a) git bez 2FA na tym komputerze, te prawdziwe hasła będą również przechowywane w postaci zwykłego tekstu.PS: Alternatywnie możesz wybrać logowanie oparte na ssh, używając klucza prywatnego ssh chronionego hasłem, co byłoby bezpieczniejsze i mniej wygodne, ale wykracza poza zakres tej odpowiedzi.
źródło
...the credential is NOT your real password, it is a randomly generated string. So it is as secure as using ssh private key.
- to wcale nie jest prawda . Klucze SSH można łatwo chronić hasłem po wyjęciu z pudełka. Zwykły~./git-credentials
- wcale nie jest zabezpieczony!Miałem podobny problem. Musiałem zmienić adres URL używany w poleceniu git, aby zawierał moją nazwę użytkownika.
Następnie, gdy zapyta o PW, użyj tokena dostępu, który utworzyłeś zgodnie z instrukcjami w odpowiedzi Gergo Erdosi.
źródło
git remote set-url --push origin
tę samą wartość,git push origin master
nadal się nie powiedzie.git-bash
działało dobrzeMożesz ustawić klucz SSH (w systemie Linux i Windows)
1) Generowanie nowego klucza SSH ( źródło )
Otwórz terminal / cmd i wklej poniższy tekst (zastąp swoim adresem e-mail GitHub)
2) Połącz klucz publiczny ze swoim kontem GitHub
W systemie Linux / macOS uruchom w terminalu:
W systemie Windows uruchom w cmd:
Spowoduje to wyświetlenie klucza publicznego:
Przejdź do https://github.com/settings/keys
New SSH Key
3) Zmień źródło git z
https://
nassh
Otwórz terminal / cmd i
cd
przejdź do katalogu sklonowanego repozytorium i uruchom:źródło
https
jest czasami przydatne, np. Podczas przechodzenia w górę strumienia,https
podczas gdy twój fork się skończyłssh
, aby uniknąć przypadkowego wypchnięcia do wyższego poziomu, ponieważhttps
poprosi o hasło i przypomni ci, że wybrałeś niewłaściwe repozytoriumTo zadziałało dla mnie:
Przejdź do [your-git-repo] /. Git / config
W obszarze
[remote "origin"]
ZmieńURL
klucz z protokołu http na git.Przykład
Jeśli wartość
url
to https://github.com/ .git, zmień ją na[email protected]:<repo-url>.git
źródło
Jeśli już używasz kluczy ssh, po włączeniu 2FA wymusi to odczyt / zapis zdalny za pomocą SSH. Naprawdę nie musisz dodawać tokenów osobistych, zamiast tego nadal używaj istniejącej pary kluczy SSH.
Po prostu zmień zdalny adres URL z HTTPS na SSH:
źródło
To zadziałało po włączeniu 2FA na Github:
Utwórz osobisty token dostępu: https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line .
UWAGA: Pamiętaj, aby wybrać odpowiednie uprawnienia dla tokena.
Uruchom:
git clone https://github.com/username/repo.git
Nazwa użytkownika:
your_username
Hasło:
your_token
Dalsza lektura: https://help.github.com/en/github/using-git/which-remote-url-should-i-use
źródło
Miałem problem z istniejącym repozytorium, gdy włączyłem 2FA (uwierzytelnianie dwuskładnikowe) dla jednego z moich prywatnych repozytoriów. Udało mi się to rozwiązać, wykonując poniższe kroki na moim terminalu Ubuntu 19.0: -
Po dodaniu klucza przejdź do terminala i zaktualizuj pierwotny adres URL
git remote set-url origin [email protected]:<USERNAME>/<BRANCH-NAME>
To wszystko. Mam nadzieję, że to pomaga
źródło