Używam Gita już od jakiegoś czasu, ale ciągłe żądania hasła zaczynają mnie podnosić.
Używam Mac OS X i GitHub i skonfigurowałem Git i moje klucze SSH zgodnie z instrukcją na stronie konfiguracji GitHub .
Dodałem także klucz github SSH do mojego pęku kluczy Mac OS X, jak wspomniano na stronie z hasłami klucza SSH w GitHub . Mój klucz publiczny jest zarejestrowany w Git.
Niemniej jednak za każdym razem, gdy próbuję pobrać Git, muszę wprowadzić swoją nazwę użytkownika i hasło. Czy jest coś innego niż klucz SSH, który muszę skonfigurować w tym celu?
netrc
'. Zobacz pełny przykład tutaj .Odpowiedzi:
Myślę, że masz zły adres URL repozytorium Git.
Otwórz
.git/config
i znajdź sekcję [zdalne „pochodzenie”]. Upewnij się, że używasz SSH:Możesz kliknąć adres URL SSH na stronie głównej repozytorium, jeśli klikniesz Klonuj lub pobierz i wybierz ssh .
I NIE
https
lubgit
jeden:Możesz teraz sprawdzić za pomocą tylko klucza SSH zamiast nazwy użytkownika i hasła.
Jeśli Git narzeka na to
'origin' has already been added
, otwórz.config
plik i edytujurl = "..."
część później[remote origin]
courl = ssh://github/username/repo.git
To samo dotyczy innych usług. Upewnij się, że adres wygląda następująco:
protocol://something@url
Np.
.git/config
Dla Azure DevOps:źródło
[remote "origin"]
sekcjiurl = ssh://[email protected]/username/Repo.git
. To działało dla mnie.url = [email protected]:organization/Repo.git
działało. +1 za poprowadzenie mnie właściwą ścieżką! Sukces!Konfigurowanie credential.helper
W systemie OS X (teraz macOS) uruchom to w Terminalu :
Umożliwia Gitowi użycie pliku Keychain.app do przechowywania nazwy użytkownika i hasła oraz do odzyskania hasła do prywatnego klucza SSH z pęku kluczy.
W przypadku systemu Windows:
Rozwiązywanie problemów
Jeśli pomocnik poświadczeń Git jest skonfigurowany poprawnie, macOS zapisuje hasło w pęku kluczy. Czasami połączenie między SSH a hasłami przechowywanymi w pęku kluczy może zostać zerwane . Uruchom
ssh-add -K
lub,ssh-add ~/.ssh/id_rsa
aby ponownie dodać klucz do pęku kluczy.macOS v10.12 (Sierra) zmienia się na ssh
W systemie macOS 10.12 (Sierra)
ssh-add -K
należy uruchamiać po każdym ponownym uruchomieniu. Aby tego uniknąć, utwórz~/.ssh/config
przy użyciu tej zawartości.Ze
ssh_config
man
strony 10.12.2:Firma Apple dodała notę techniczną 2449, która wyjaśnia, co się stało.
źródło
.netrc
metody pliku, która umieszcza twoje hasło w postaci zwykłego tekstu.'credential-osxkeychain' is not a git command.
ponieważ nie miałem zainstalowanego pomocnika poświadczeń. Postępowałem zgodnie z instrukcjami tutaj, aby go zainstalować: help.github.com/articles/set-up-git#password-cachinggit config --global credential.helper osxkeychain
plik konfiguracyjny w moim.ssh
katalogu, który mnie naprawił.Zdarzyło mi się to, kiedy zaktualizowałem system do macOS 10.12 (Sierra). Wygląda na to, że agent SSH został wyczyszczony po aktualizacji.
Po prostu uruchomiłem
ssh-add
zlokalizowałem moją istniejącą tożsamość. Podałem hasło i dobrze było wrócić.źródło
Użyj tego: Zastąp github.com odpowiednią nazwą hosta
źródło
git remote -v
. Nadal jednak pojawia się monit o hasło.git@**
nie wyświetla poświadczeń, a adres URLhttps@**
robi :). Tak więc znalazłem ten dokument .Jak powiedzieli inni, możesz zainstalować pomocnika pamięci podręcznej haseł. Przede wszystkim chciałem opublikować link do innych platform, a nie tylko do komputerów Mac. Korzystam z serwera Linux i było to pomocne: buforowanie hasła GitHub w Git
Dla Maca:
Windows:
Linux:
źródło
Poszukaj również, kto prosi o hasło. Czy to Git czy Twój agent SSH?
W moim przypadku za każdym razem
git pull
pytałem:Enter passphrase for key '/work/username/.ssh/id_rsa':
Więc założyłem, że to Git prosi o hasło. Tak więc wciąż szukałem rozwiązań, ale później uświadomiłem sobie, że mój agent SSH został zamknięty. Które można naprawić za pomocą
eval $(ssh-agent)
issh-add
jak podano tutaj.Wklejam również poniżej mały fragment, który możesz dodać do
~/.bashrc
pliku (lub odpowiednika), aby mieć pewność, że agent SSH zostanie uruchomiony przy logowaniu.W każdym razie to był dość głupi błąd, który popełniłem, ale opublikowanie go tutaj, na wypadek, gdyby pomogło to komuś zaoszczędzić trochę czasu na szczekaniu niewłaściwego drzewa, tak jak ja.
źródło
SSH_ENV="$HOME/.ssh/environment"
Uwaga: Chociaż jest to wygodne, Git będzie przechowywać twoje dane uwierzytelniające w postaci zwykłego tekstu w pliku lokalnym (.git-referencje) w katalogu projektu (patrz poniżej katalog „domowy”). Jeśli ci się nie podoba, usuń ten plik i przejdź do korzystania z opcji pamięci podręcznej.
Jeśli chcesz, aby Git wznawiał prośbę o podanie poświadczeń za każdym razem, gdy musi połączyć się ze zdalnym repozytorium, możesz uruchomić tę komendę:
Aby przechowywać hasła w .git-credentials w katalogu% HOME% w przeciwieństwie do katalogu projektu: użyj flagi --global
źródło
Przewodnik po Git w systemie Windows i GitHub za pomocą SSH do pchania / ciągnięcia: Ilustrowany przewodnik po Git w systemie Windows
źródło
W systemie Windows dla Git 1.7.9+ uruchom następujące polecenie w wierszu polecenia, aby otworzyć plik konfiguracyjny w edytorze tekstu:
Następnie w pliku dodaj następujący blok, jeśli go nie ma, lub odpowiednio go edytuj:
Zapisz i zamknij plik. Musisz podać poświadczenia tylko raz po powyższej zmianie.
źródło
Użyj następującego polecenia, aby wydłużyć limit czasu, aby na chwilę móc ponownie wpisać hasło
Użyłem go do Bitbucket i GitHub, to działa na oba. Jedyne, co musisz zrobić,
3600
to w kilka sekund. Zwiększ go w dowolnym zakresie. Zmieniłem to na259200
około 30 dni. W ten sposób ponownie wprowadzam hasło co około 30 dni.źródło
Myślę, że naprawiłeś swój problem, ale nie widzę tutaj rozwiązania, które mi pomogło, więc oto jest.
Wpisz terminal:
Spowoduje to opróżnienie
known_hosts
pliku i będziesz musiał dodać każdy host, z którego korzystałeś i do którego się łączyłeś, ale to rozwiązało problem.źródło
cat /dev/null > ~/.ssh/known_hosts
zrobi to samo.> ~/.ssh/known_hosts
jest jeszcze krótszy :)Wydaje mi się, że odpowiedź podana przez static_rtti jest w pewnym sensie zhackowana. Nie wiem, czy było to wcześniej dostępne, ale narzędzia Git zapewniają teraz przechowywanie poświadczeń.
Tryb pamięci podręcznej
Tryb „pamięci podręcznej” służy do przechowywania poświadczeń w pamięci przez określony czas. Żadne z haseł nigdy nie jest przechowywane na dysku i są usuwane z pamięci podręcznej po 15 minutach.
Tryb sklepu
Użyj trybu „przechowuj”, aby zapisać dane uwierzytelniające w pliku tekstowym na dysku i nigdy nie wygasają.
Osobiście korzystałem z trybu sklepu . Usunąłem moje repozytorium, sklonowałem je, a następnie musiałem raz wprowadzić dane uwierzytelniające.
Odniesienie: 7.14 Git Tools - Przechowywanie poświadczeń
źródło
credential.helper cache
NIE działa. Powinno byćgit config --global credential.helper wincred
.git config --local credential.helper store
. W moim przypadku korzystam z protokołu HTTPS, w ten sposóbOdpowiedź orkoden na temat używania pęku kluczy z Gitem w twoim terminalu była niepełna i budzi błędy. Oto, co musisz zrobić, aby zapisać nazwę użytkownika i hasło, które wprowadzasz w terminalu w pęku kluczy:
Następnie wejdź
Jeśli już wykonałeś część z konfiguracją Git przed zawijaniem, nie ma problemu; to zadziała.
źródło
Jak powiedziałem static_rtti, zmień
do
Sam zmieniłem
https
plik .git / config nassh
, ale nadal nie działał. Potem zobaczyłem, że musisz się zmienićgithub.com
się[email protected]
. Dobrym sposobem na uzyskanie prawidłowego adresu URL jest przejście do strony projektu i kliknięcie tego:Zmień HTTPS na SSH, aby uzyskać właściwy adres URL
Następnie dodaj ten adres URL do pliku konfiguracyjnego.
źródło
W Windows Subsystem for Linux (WSL) było to jedyne rozwiązanie, które znalazłem do pracy:
eval
`ssh-agent`; ssh-add ~/.ssh/id_rsa
Problem polegał na tym, że ssh-agent nie został poprawnie zarejestrowany w WSL.
źródło
Jeśli chcesz powstrzymać Gita od ciągłego pytania Cię o dane logowania do repozytorium GitHub, możesz to łatwo zrobić.
Używanie SSH zamiast HTTPS
Możesz zaktualizować źródłowy pilot za pomocą SSH zamiast HTTPS ”
Skonfiguruj Git, aby przechowywał twoje hasło i nazwę użytkownika
Oto, w jaki sposób możesz zmusić Git do przechowywania nazwy użytkownika i hasła:
Następnie zapisz nazwę użytkownika i hasło dla sesji:
źródło
Zgadzam się z „Codehuggerem” i korzystając z instrukcji „orkoden” zadziałało to dla mnie - na NetBeans 7.3 - kiedy klikniesz plik prawym przyciskiem myszy i wybierzesz menu kontekstowe - push - otwiera się okno „push to remote” - są dwa opcje tutaj:
origin:https://github.com/myaccount/myproject.git/
https://github.com/myaccount/myproject.git/
Jak widać, różnica polega na parametrze źródłowym w adresie URL - nie chcesz wybierać tej opcji (1), ale chcesz sprawdzić opcję (2), i to działa dobrze dla mnie.
źródło
Krok 1: sprawdź swoją bieżącą konfigurację
Dostaniesz:
Krok 2: usuń swoje zdalne pochodzenie
Krok 3: dodaj zdalne pochodzenie z powrotem swoją nazwą użytkownika i hasłem
źródło
git branch --set-upstream master origin/master
Jeśli Git wyświetla monit o podanie nazwy użytkownika i hasła przy każdej próbie interakcji z GitHub, prawdopodobnie używasz sklonowanego adresu URL HTTPS dla swojego repozytorium.
Korzystanie ze zdalnego adresu URL HTTPS ma pewne zalety: jest łatwiejsze do skonfigurowania niż SSH i zwykle działa poprzez ścisłe zapory ogniowe i serwery proxy. Jednak monituje również o podanie poświadczeń GitHub za każdym razem, gdy pobierasz lub wypychasz repozytorium.
Możesz skonfigurować Git, aby przechowywał dla ciebie hasło. W systemie Windows :
źródło
W systemie macOS Cataline 10.15 metoda buforowania pęku kluczy nie działała dla mnie. I chciałem użyć
https://
niessh
Oto, co zadziałało dla mnie:
To również powinno działać na GitLab
Upewnij się, że nazwa użytkownika zawiera adres e-mail, aby usunąć
@email
część, w przeciwnym razie pojawi się komunikat o błędzieURL using bad/illegal format or missing URL
.Mam nadzieję że to pomoże!
źródło
Istnieją różne rodzaje uwierzytelnień w zależności od konfiguracji. Tu jest kilka:
git credential-osxkeychain
.Jeśli twoje dane uwierzytelniające są nieprawidłowe, usuń je poprzez:
lub:
Więc Git nie poprosi Cię ponownie o pozwolenie na pęku kluczy. Następnie skonfiguruj go ponownie.
Zobacz: Aktualizowanie poświadczeń z pęku kluczy OS X na GitHub
Twój klucz SSH RSA.
W tym celu musisz porównać swój klucz SSH z dodanym, sprawdź przez
ssh-add -L
/ssh-add -l
czy używasz właściwej tożsamości.Twoje uwierzytelnianie HTTPS (jeśli używasz
https
zamiastssh
protokołu).Użyj
~/.netrc
(%HOME%/_netrc
w systemie Windows), aby podać swoje dane uwierzytelniające, npDowiedz się więcej: Synchronizacja z GitHub w Stack Overflow.
źródło
Zanim będziesz mógł używać swojego klucza w GitHub, wykonaj ten krok w samouczku Testowanie połączenia SSH :
źródło
Posiadanie literówki w adresie URL sprawi, że Git poprosi cię o nazwę użytkownika i hasło, głupie Git.
Został przetestowany na Kali Linux , Git w wersji 2.7.0,
Próbować:
źródło
Jeśli korzystasz z systemu Windows, a to nagle zaczęło się dziać zupełnie nieoczekiwanie w GitHub, prawdopodobnie jest to spowodowane niedawnym wyłączeniem przez GitHub obsługi przestarzałych algorytmów kryptograficznych 22.02.2018, w którym to przypadku rozwiązaniem jest po prostu pobranie i zainstalowanie najnowsza wersja pełnego Git dla Windows lub tylko Git Credential Manager dla Windows .
źródło
Rozwiązanie Microsoft Stack (Windows i Azure DevOps)
Najpierw otwórz
.git/config
plik, aby upewnić się, że adres wygląda następująco:Np. .Git / config dla Azure DevOps:
Jeśli problem nadal występuje, otwórz Menedżera poświadczeń systemu Windows , kliknij sejf o nazwie Poświadczenia systemu Windows i usuń wszystkie poświadczenia związane z git.
Teraz, kiedy następnym razem zalogujesz się do git, już nie zniknie.
źródło
Jeśli masz skonfigurowanego agenta SSH, możesz również dodać to do swojego,
~/.gitconfig
aby zmusić git do używania SSH dla wszystkich repozytoriów GitHub zamiast HTTPS:(Jeśli pracujesz głównie z publicznymi repozytoriami, możesz także użyć
pushInsteadOf
zamiastinsteadOf
, ponieważ czytanie z repozytorium publicznego można wykonać bez uwierzytelnienia).źródło