Git ciągle monituje mnie o hasło

665

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?

Katarzyna
źródło
1
Głupie pytanie, ale czy sprawdziłeś, że klucz SSH działa, gdy po prostu używasz ssh na maszynie z git?
Kurt Stutsman
4
Masz na myśli coś takiego jak ssh -T [email protected]? Tak, to działa dobrze (jeśli jest trochę powolne).
Catherine
W przypadku adresu URL https możesz użyć (z git1.8.3 +) pomocnika do uwierzytelniania git ' netrc'. Zobacz pełny przykład tutaj .
VonC
Jestem użytkownikiem systemu Windows i napotkałem również problem z prośbą o hasło, nawet po dodaniu mojego klucza publicznego do pliku uprawnionego serwera. Problem polegał na tym, że nie trzymałem moich kluczy publicznych / prywatnych w folderze .ssh folderu c: \ program files \ git. Jeśli ktoś ma do czynienia z takim problemem, skopiuj klucze do tego folderu i spróbuj pchać / ciągnąć.
Raja Amer Khan

Odpowiedzi:

797

Myślę, że masz zły adres URL repozytorium Git.

Otwórz .git/configi znajdź sekcję [zdalne „pochodzenie”]. Upewnij się, że używasz SSH:

ssh://[email protected]/username/repo.git

Możesz kliknąć adres URL SSH na stronie głównej repozytorium, jeśli klikniesz Klonuj lub pobierz i wybierz ssh .

I NIE httpslubgit jeden:

https://github.com/username/repo.git
git://github.com/username/repo.git

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 .configplik i edytuj url = "..."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/configDla Azure DevOps:

[remote "origin"]
    url = https://[email protected]/mystore/myproject/
    fetch = +refs/heads/*:refs/remotes/origin/*
static_rtti
źródło
4
To może być to. Kiedy dzwonię do git remote -v, otrzymuję: origin github.com/Foo/Bar.git (pobierz) origin github.com/Foo/Bar.git (push), podczas gdy do pracy z SSH wydaje się, że powinno być: origin git @ github.com: Foo / Bar.git (fetch) origin [email protected]: Foo / Bar.git (push) Może to być spowodowane tym, że pierwotnie sprawdziłem mój projekt za pomocą aplikacji Mac GitHub ( mac.github.com ). Masz pomysł, jak to naprawić?
Catherine
8
Napraw adres URL w pliku .git / config, użyj git-remote, aby go naprawić, lub usuń lokalne repozytorium i sklonuj go ponownie z poprawnym adresem URL.
static_rtti 14.10.11
91
Aby to przeliterować (tak, jak tego potrzebowałem): otwórz .git / config i w zestawie [remote "origin"]sekcji url = ssh://[email protected]/username/Repo.git. To działało dla mnie.
Greg K
13
Dziwne, rozwiązanie @ GregK nie działało dla mnie, ale url = [email protected]:organization/Repo.gitdziałało. +1 za poprowadzenie mnie właściwą ścieżką! Sukces!
jmort253,
3
Nie mogę wystarczająco podkreślić, jak ważne jest KLONOWANIE za pomocą ssh: // git @ github / [nazwa użytkownika] / [reponame]. Git czy chcesz użyć klucza, aby uzyskać dostęp do GIT, nie musisz za każdym razem wpisywać nazwy użytkownika i hasła . Uważam, że jedynym sposobem, aby naprawić to było usunięcie lokalnego repo i ponownie clone $ git clone git ssh: // @ github / [nazwa użytkownika] / [reponame] .git
Gene Myers
555

Konfigurowanie credential.helper

W systemie OS X (teraz macOS) uruchom to w Terminalu :

git config --global credential.helper osxkeychain

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:

git config --global credential.helper wincred

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 -Klub, ssh-add ~/.ssh/id_rsaaby ponownie dodać klucz do pęku kluczy.

macOS v10.12 (Sierra) zmienia się na ssh

W systemie macOS 10.12 (Sierra) ssh-add -Knależy uruchamiać po każdym ponownym uruchomieniu. Aby tego uniknąć, utwórz ~/.ssh/configprzy użyciu tej zawartości.

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

Ze ssh_config manstrony 10.12.2:

Użyj klucza pęku kluczy

W systemie macOS określa, czy system powinien wyszukiwać hasła w pęku kluczy użytkownika podczas próby użycia określonego klucza. Gdy hasło jest dostarczane przez użytkownika, ta opcja określa również, czy hasło powinno być przechowywane w pęku kluczy po zweryfikowaniu, czy jest poprawne. Argumentem musi być „tak” lub „nie”. Domyślne ustawienie to „nie”.

Firma Apple dodała notę techniczną 2449, która wyjaśnia, co się stało.

Przed systemem macOS Sierra sshprzedstawiałby okno dialogowe z prośbą o podanie hasła i oferowałby opcję zapisania go w pęku kluczy. Ten interfejs użytkownika został wycofany jakiś czas temu i został usunięty.

orkoden
źródło
30
Jest to zdecydowanie najlepszy sposób, aby to zrobić, ponieważ aplikacja Github dla OSX (może także Windows) domyślnie używa ścieżki https dla repozytoriów git. Istnieje również dobry powód, aby używać https zamiast ssh / git, ponieważ wiele sieci korporacyjnych ze względów bezpieczeństwa zezwala na ruch tylko na portach 80 i 443 .
Codehugger
2
Potrzebujesz git 1.7.10 lub nowszego, aby używać pomocnika poświadczeń.
jbandi
3
+1 za rozwiązanie keychain.app. Jest to dla mnie WIELKIE , ponieważ serwer git mojego pracodawcy obsługuje tylko http obsługiwane przez apache i zdecydowanie odradzają stosowanie .netrcmetody pliku, która umieszcza twoje hasło w postaci zwykłego tekstu.
Josh
3
Uwaga: dostałem błąd, '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-caching
Hugh
2
Dzięki za aktualizację Sierra, właśnie zaktualizowałem i nie mogłem zrozumieć, dlaczego github wciąż pytał o pw, gdy dodałem git config --global credential.helper osxkeychainplik konfiguracyjny w moim .sshkatalogu, który mnie naprawił.
piksel 67
139

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.

$ ssh-add -L
The agent has no identities.

Po prostu uruchomiłem ssh-addzlokalizowałem moją istniejącą tożsamość. Podałem hasło i dobrze było wrócić.

amcc
źródło
9
+1 przełamane przez ulepszenie Sierra. Uwaga: hasło to hasło do klucza SSH, a nie hasło użytkownika komputera Mac.
mbonness
1
Wykonanie ssh-add działa, ale wygląda na to, że zostało zresetowane po zamknięciu okna terminala. Może to nowa funkcja.
joshd
Uwaga - stało się to ponownie z kolejną aktualizacją Sierra (10.12.2), ale obowiązuje ta sama poprawka.
Brian
Czy ktoś wie, jak to zresetować po zamknięciu terminala?
nickjwallin
1
Właśnie zaktualizowałem mojego MacBooka Pro do wersji 10.12.2 i to zepsuło mój git. Korzystanie z ssh-add całkowicie mi działało. Dzięki @amcc!
jimmyplaysdrums
68

Użyj tego: Zastąp github.com odpowiednią nazwą hosta

git remote set-url origin [email protected]:user/repo.git
Darrell Duane
źródło
Mam już ustawiony podczas przeglądania git remote -v. Nadal jednak pojawia się monit o hasło.
IgorGanapolsky
To samo ustawiłem zgodnie z jego sugestią, ale nadal pojawia się monit o hasło, jak temu zapobiec?
cyber8200
@IgorGanapolsky: Czy kiedykolwiek znalazłeś dla siebie rozwiązanie?
cyber8200
1
To działa poprawnie. To dziwne, że zdalny adres URL git@**nie wyświetla poświadczeń, a adres URL https@**robi :). Tak więc znalazłem ten dokument .
Sujit Kumar Singh
54

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:

git credential-osxkeychain

Windows:

git config --global credential.helper wincred

Linux:

git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)
Chase Roberts
źródło
5
Musiałem przewinąć w dół do trzeciej odpowiedzi, aby zobaczyć instrukcje dla Linuksa, powinny one znaleźć się w głównej odpowiedzi, ponieważ jest to często wskazywany problem.
KoldBane
22

Poszukaj również, kto prosi o hasło. Czy to Git czy Twój agent SSH?

W moim przypadku za każdym razem git pullpytał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)i ssh-addjak podano tutaj.

Wklejam również poniżej mały fragment, który możesz dodać do ~/.bashrcpliku (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.

# Start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."

    # Spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
    echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV} > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

mithunpaul
źródło
Jestem pewien, że brakuje Ci wiersza w powyższym kodzie - zgodnie z stackoverflow.com/a/18915067/277023 musisz miećSSH_ENV="$HOME/.ssh/environment"
kellyfj
20
git config credential.helper store

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ę:

git config --unset credential.helper

Aby przechowywać hasła w .git-credentials w katalogu% HOME% w przeciwieństwie do katalogu projektu: użyj flagi --global

git config --global credential.helper store
Lokesh S
źródło
9

Przewodnik po Git w systemie Windows i GitHub za pomocą SSH do pchania / ciągnięcia: Ilustrowany przewodnik po Git w systemie Windows

  1. Pobierz i zainstaluj PuTTY
  2. Ustaw zmienną środowiskową „GIT_SSH” = „ścieżka \ do \ plink.exe” (w zainstalowanym folderze kit) - bardzo ważne !!!
  3. Uruchom ponownie Eksploratora Windows, aby zmienne środowiskowe zaczęły obowiązywać (nie można tylko ponownie uruchomić wiersza polecenia)
  4. Uruchom puttygen.exe, aby wygenerować nowy klucz, skopiuj klucz publiczny do witryny GitHub
  5. Zapisz ten nowy klucz prywatny w bezpiecznym miejscu na dysku (najlepiej nie Dropbox )
  6. Uruchom putty.exe i połącz SSH z github.co
  7. Szybko przejdź do folderu startowego, uruchamiając „shell: startup”.
  8. Dokonaj uruchamiania klucza prywatnego w systemie Windows za pomocą korowodu. Utwórz skrót w folderze Autostart ze składnią „ścieżka \ do \ pageant.exe” „ścieżka \ do \ privatekey”
  9. Nie musimy ustawiać ustawienia „puttykeyfile” wewnątrz .git / config naszych repozytoriów
  10. Bardzo ważne jest to, że używany jest „klonowany adres URL SSH” GitHub, a nie HTTPS.
Francois
źródło
Nikt nie powinien już używać szpachli. Teraz możesz zrobić wszystko dzięki wbudowanym narzędziom systemu Windows 10. Niech kit będzie po prostu kitem.
Ian Smith
9

W systemie Windows dla Git 1.7.9+ uruchom następujące polecenie w wierszu polecenia, aby otworzyć plik konfiguracyjny w edytorze tekstu:

    git config --global --edit

Następnie w pliku dodaj następujący blok, jeśli go nie ma, lub odpowiednio go edytuj:

    [credential "https://giturl.com"]
        username = <user id>
         helper = wincred

Zapisz i zamknij plik. Musisz podać poświadczenia tylko raz po powyższej zmianie.

Rohan
źródło
to działa idealnie, oszczędziłeś moje godziny, teraz mogę skoncentrować się na mojej pracy, wielkie dzięki Bracie.
Mohammed Sufian
9

Użyj następującego polecenia, aby wydłużyć limit czasu, aby na chwilę móc ponownie wpisać hasło

git config --global credential.helper 'cache --timeout 3600'

Użyłem go do Bitbucket i GitHub, to działa na oba. Jedyne, co musisz zrobić, 3600to w kilka sekund. Zwiększ go w dowolnym zakresie. Zmieniłem to na 259200około 30 dni. W ten sposób ponownie wprowadzam hasło co około 30 dni.

Ravi Kumar
źródło
1
Ok, odkryłem, że to nie utrzymuje się po ponownym uruchomieniu, więc nadal musisz wprowadzić hasło po ponownym uruchomieniu, niezależnie od limitu czasu ...
Ben Winding 1'18
To dobry sposób na zrobienie pamięci podręcznej :) Przynajmniej zaoszczędziłem mój czas. Dzięki
ChikuMiku,
@BenWinding, ponieważ przechowuje poświadczenia w pamięci.
z3dd
5

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:

echo "" > ~/.ssh/known_hosts

Spowoduje to opróżnienie known_hostspliku 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.

papan
źródło
1
cat /dev/null > ~/.ssh/known_hostszrobi to samo.
Tin Man,
5
> ~/.ssh/known_hostsjest jeszcze krótszy :)
Collin Allen
rm ~ / .ssh / known_hosts również powinien wykonać to zadanie. Jednak odradzałbym to.
orkoden
3
Jeśli musisz usunąć hosta z ~ / .ssh / known_hosts, istnieje mniej skuteczny sposób niż usunięcie pliku. ~ / .ssh / known_hosts to tylko plik tekstowy, a jeśli znajdziesz w nim szkodliwych hostów, możesz po prostu usunąć ich wiersze. Przed utworzeniem pliku możesz utworzyć kopię zapasową pliku. Jeśli w pliku jest tylko kilka wpisów, wyczyszczenie go może nie być złym pomysłem. Pracuję na wielu serwerach, więc mój ~ / .ssh / known_hosts zawiera setki wpisów i nie jestem jeszcze gotowy, aby je wszystkie usunąć, aby usunąć kilka wpisów.
Tim Stewart
3
@papan To nie przeszkadza gitowi pytać mnie o hasło!
IgorGanapolsky
5

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

$ git config --global credential.helper cache

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

$ git config --global credential.helper 'store --file ~/.my-credentials'

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ń

Ducktales
źródło
W systemie Windows credential.helper cacheNIE działa. Powinno być git config --global credential.helper wincred.
Paulo Merson
Przechowywanie działało, a teraz pozwala mi zatwierdzać zmiany bez konieczności ciągłego podawania hasła, jesteś ratownikiem!
g4ost
W Linuksie zrobiło to za mnie git config --local credential.helper store. W moim przypadku korzystam z protokołu HTTPS, w ten sposób
wpisuję
3

Odpowiedź 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:

curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain

Następnie wejdź

git config --global credential.helper osxkeychain

Jeśli już wykonałeś część z konfiguracją Git przed zawijaniem, nie ma problemu; to zadziała.

Lukas
źródło
1
Co jeśli jestem na Linuksie.
IgorGanapolsky
3

Jak powiedziałem static_rtti, zmień

https://github.com/username/repo.git
git://github.com/username/repo.git

do

ssh://[email protected]/username/repo.git

Sam zmieniłem httpsplik .git / config na ssh, 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.

CheesusCrust
źródło
Mam to już w pliku konfiguracyjnym config, co jeszcze powinienem sprawdzić?
cyber8200
Zmieniłeś to również na github.com?
CheesusCrust
3

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.

James Gentes
źródło
Byłem whlie, ale to naprawiło mój problem.
Nam Kim
3

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 ”

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

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:

git config --global credential.helper store

Następnie zapisz nazwę użytkownika i hasło dla sesji:

git config --global credential.helper cache
Ahmed Bouchefra
źródło
2

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:

  1. origin:https://github.com/myaccount/myproject.git/

  2. 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.

Łajno
źródło
2

Krok 1: sprawdź swoją bieżącą konfigurację

cat .git/config

Dostaniesz:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/path_to_your_git.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[user]
    name = your_username
    email = your_email
[branch "master-staging"]
    remote = origin
    merge = refs/heads/master-staging

Krok 2: usuń swoje zdalne pochodzenie

git remote rm origin

Krok 3: dodaj zdalne pochodzenie z powrotem swoją nazwą użytkownika i hasłem

git remote add origin https://your_git_username:[email protected]/path_to_your_git.git
Haimei
źródło
Po ponownym dodaniu zdalnego pochodzenia musisz również wyrównać swoje oddziały zdalnie i lokalnie - coś takiego: git branch --set-upstream master origin/master
Richard Bown
2

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 :

git config --global credential.helper wincred
Emiliano Schiano
źródło
2

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:

git remote rm origin

git remote add origin https://your_git_username:[email protected]/path_to_your_git.git

To również powinno działać na GitLab

Upewnij się, że nazwa użytkownika zawiera adres e-mail, aby usunąć @emailczęść, w przeciwnym razie pojawi się komunikat o błędzie URL using bad/illegal format or missing URL.

Mam nadzieję że to pomoże!

ICeZer0
źródło
To jest jedyne rozwiązanie, które działało dla mnie. twoja_nazwa_użytkownika była krytyczna. W rzeczywistości nie było konieczne wprowadzenie: twoje_git_hasło. W tym momencie, mimo że wciąż prosił o „hasło”, teraz zaakceptuje hasło do konta.
kbulgrien
1

Istnieją różne rodzaje uwierzytelnień w zależności od konfiguracji. Tu jest kilka:

  1. git credential-osxkeychain.

    Jeśli twoje dane uwierzytelniające są nieprawidłowe, usuń je poprzez:

      git credential-osxkeychain erase
    

    lub:

      printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
    

    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

  2. Twój klucz SSH RSA.

    W tym celu musisz porównać swój klucz SSH z dodanym, sprawdź przez ssh-add -L/ ssh-add -lczy używasz właściwej tożsamości.

  3. Twoje uwierzytelnianie HTTPS (jeśli używasz httpszamiastssh protokołu).

    Użyj ~/.netrc( %HOME%/_netrcw systemie Windows), aby podać swoje dane uwierzytelniające, np

      machine stash1.mycompany.com
      login myusername
      password mypassword
    

Dowiedz się więcej: Synchronizacja z GitHub w Stack Overflow.

kenorb
źródło
1

Zanim będziesz mógł używać swojego klucza w GitHub, wykonaj ten krok w samouczku Testowanie połączenia SSH :

$ ssh -T git@github.com
# Attempts to ssh to GitHub
Jonny
źródło
0

Rozwiązanie Microsoft Stack (Windows i Azure DevOps)

Najpierw otwórz .git/configplik, aby upewnić się, że adres wygląda następująco:

protocol://something@url

Np. .Git / config dla Azure DevOps:

[remote "origin"]
    url = https://[email protected]/mystore/myproject/
    fetch = +refs/heads/*:refs/remotes/origin/*

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.

Bizhan
źródło
0

Jeśli masz skonfigurowanego agenta SSH, możesz również dodać to do swojego, ~/.gitconfigaby zmusić git do używania SSH dla wszystkich repozytoriów GitHub zamiast HTTPS:

[url "ssh://[email protected]/"]
    insteadOf = git://github.com/
    insteadOf = https://github.com/

(Jeśli pracujesz głównie z publicznymi repozytoriami, możesz także użyć pushInsteadOfzamiast insteadOf, ponieważ czytanie z repozytorium publicznego można wykonać bez uwierzytelnienia).

nyuszika7h
źródło