Dlaczego git nie pamięta mojego hasła w systemie Windows

144

Właśnie zacząłem używać git i nie mogę zapamiętać mojego hasła Używam cmd.exe z podwyższonym poziomem uprawnień, a moim hostem git jest github i utworzyłem klucz SSH, taki jak ten przewodnik na github

ale nadal rozumiem

*\subnus.mvc>git push origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':
Nesizer
źródło
Sam nie korzystałem z msysgit, ale agent uwierzytelniania widowiskowego może być pomocny.
Cebjyre
1
Próbowałem wszystkiego, a potem okazało się, że to działa.
Blake Niemyjski
1
Windows 10 jest już od jakiegoś czasu dostarczany z OpenSSH. Włącz usługę ssh-agent, użyj ssh-add, aby dodać swój klucz do magazynu ssh i ustaw GIT_SSHw swoim środowisku (jeśli to konieczne), a git / ssh zapamięta twoje hasło za pośrednictwem ssh-agent. Zobacz moją odpowiedź poniżej, aby uzyskać bardziej szczegółowe instrukcje.
d3r3kk
1
2019, właśnie zainstalowałem git w systemie Windows 10 i git prosi o hasło raz i je zapamiętuje.
Jean-François Fabre
@ Jean-FrançoisFabre Być może nie używasz OpenSSL.
RoadRunner

Odpowiedzi:

206

Zdaję sobie sprawę, że to pytanie ma dwa lata, ale miałem ten sam problem i kilka odpowiedzi tutaj nie udzieliło pełnej odpowiedzi na pytanie. Oto dwa rozwiązania krok po kroku, w zależności od tego, czy używasz TortoiseGit oprócz msysgit, czy nie.

Pierwsze rozwiązanie zakłada system Windows, msysgit i PuTTY.

  1. Zainstaluj msysgit i PuTTY zgodnie z instrukcją.
  2. (Opcjonalnie) Dodaj PuTTY do swojej ścieżki. (Jeśli tego nie zrobisz, wszelkie odniesienia do poniższych poleceń PuTTY muszą być poprzedzone pełną ścieżką do odpowiedniego pliku wykonywalnego).
  3. Jeśli jeszcze tego nie zrobiłeś, wygeneruj skrót klucza zgodnie z instrukcją na GitHub lub zgodnie z instrukcją hosta Git.
  4. Ponownie, jeśli jeszcze tego nie zrobiłeś, przekonwertuj swój klucz do użytku z programem Pageant.exe programu PuTTY, używając puttygen.exe . Instrukcje znajdują się w dokumentacji PuTTY, w tym pomocnym przewodniku i kilku innych miejscach w cyberprzestrzeni.
  5. Uruchom plik pageant.exe programu PuTTY , otwórz plik .ppk („Dodaj klucz”) i podaj hasło do klucza.
  6. Otwórz okno dialogowe zmiennych środowiskowych systemu Windows (kliknij prawym przyciskiem myszy „Komputer”, kliknij „Właściwości”, kliknij „Zaawansowane ustawienia systemu” lub zakładkę „Zaawansowane”, kliknij „Zmienne środowiskowe”). Dodaj następującą zmienną środowiskową:

    GIT_SSH = C: \ full \ path \ to \ plink.exe

    Zastąp „C: \ pełna \ ścieżka \ do” pełną ścieżką instalacji do programu PuTTY, w którym znajduje się plik plink.exe. Prawdopodobnie najlepiej jest dodać go do sekcji „Zmienne użytkownika”. Upewnij się również, że ścieżka używana do pliku plink.exe jest zgodna ze ścieżką używaną w przypadku Pageant (pageant.exe). W niektórych przypadkach możesz mieć kilka instalacji PuTTY, ponieważ może on zostać zainstalowany wraz z innymi aplikacjami. Użycie plink.exe z jednej instalacji i pageant.exe z innej może spowodować problemy.

  7. Otwórz wiersz polecenia.

  8. Jeśli próbujesz połączyć się z repozytorium git hostowanym na Github.com, uruchom następujące polecenie:

    plink.exe [email protected]

    Jeśli repozytorium git, z którym próbujesz się połączyć, jest hostowane w innym miejscu, zamień [email protected] na odpowiednią nazwę użytkownika i adres URL. (Zakładając Github) Powinieneś zostać poinformowany, że klucz hosta serwera nie jest zapisany w pamięci podręcznej i zapytać, czy mu ufasz. Odpowiedz y . Spowoduje to dodanie klucza hosta serwera do listy znanych hostów PuTTY. Bez tego kroku polecenia git nie będą działać poprawnie. Po naciśnięciu klawisza Enter Github informuje, że Github nie zapewnia dostępu do powłoki. W porządku ... nie potrzebujemy tego. (Jeśli łączysz się z innym hostem i daje ci to dostęp do powłoki, prawdopodobnie najlepiej jest zakończyć połączenie bez robienia czegokolwiek innego).

  9. Gotowe! Polecenia Git powinny teraz działać z wiersza poleceń. Możesz chcieć, aby pageant.exe ładował plik .ppk automatycznie podczas uruchamiania , w zależności od tego, jak często będziesz go potrzebować.

Drugie rozwiązanie Zakłada Windows, msysgit i TortoiseGit.

TortoiseGit zawiera pliki wykonywalne PuTTY i specjalnie zmodyfikowaną wersję Plink (zwaną TortoisePlink.exe), która ułatwi sprawę.

  1. Zainstaluj msysgit i TortoiseGit zgodnie z instrukcją.
  2. Jeśli jeszcze tego nie zrobiłeś, wygeneruj skrót klucza zgodnie z instrukcją na GitHub lub zgodnie z instrukcją hosta Git.
  3. Ponownie, jeśli jeszcze tego nie uczyniły, przekształcić swój klucz do stosowania z pageant.exe TortoiseGit Korzystanie TortoiseGit za puttygen.exe . Instrukcje znajdują się w dokumentacji PuTTY, w pomocnym przewodniku, do którego odsyłamy w pierwszym rozwiązaniu oraz w kilku innych miejscach w cyberprzestrzeni.
  4. Uruchom plik pageant.exe TortoiseGit otwórz plik .ppk ( „Dodaj klucz”) i podać hasło do klucza.
  5. Otwórz okno dialogowe zmiennych środowiskowych systemu Windows (kliknij prawym przyciskiem myszy „Komputer”, kliknij „Właściwości”, kliknij „Zaawansowane ustawienia systemu” lub zakładkę „Zaawansowane”, kliknij „Zmienne środowiskowe”). Dodaj następującą zmienną środowiskową:

    GIT_SSH = C: \ full \ path \ to \ TortoisePlink.exe

    Zastąp „C: \ pełna \ ścieżka \ do” pełną ścieżką instalacji do TortoiseGit, gdzie znajduje się TortoisePlink.exe. Prawdopodobnie najlepiej jest dodać go do sekcji „Zmienne użytkownika”. Upewnij się również, że ścieżka, której używasz do TortoisePlink.exe, odpowiada ścieżce używanej dla Pageant (pageant.exe). W niektórych przypadkach możesz mieć kilka instalacji PuTTY, ponieważ może on zostać zainstalowany wraz z innymi aplikacjami. Używanie TortoisePlink.exe z instalacji TortoiseGit i pageant.exe z innej instalacji innej aplikacji (lub z samodzielnej instalacji PuTTY) prawdopodobnie spowoduje problemy.

  6. Gotowe! Polecenia Git powinny teraz działać z wiersza poleceń. Podczas pierwszej próby połączenia się z repozytorium git prawdopodobnie zostaniesz poinformowany, że klucz hosta serwera nie jest zapisany w pamięci podręcznej i zapyta, czy ufasz serwerowi. Kliknij „Tak”. (To jest TortoisePlink.exe w akcji).

    Możesz chcieć, aby pageant.exe ładował plik .ppk automatycznie podczas uruchamiania , w zależności od tego, jak często będziesz go potrzebować.

Trzecie rozwiązanie Zakłada okno, msysgit i natywny wiersz poleceń.

  1. Zainstaluj msysgit
  2. Upewnij się, że zezwalasz na używanie git w wierszu poleceń MS-DOS
  3. Biegać start-ssh-agent
  4. Wpisz hasła SSH
  5. Gotowe! Polecenia Git powinny teraz działać w natywnym wierszu poleceń.
Matt Clarkson
źródło
3
Jeśli masz zarówno GitExtensions, jak i TortoiseGit, z których każdy ma swoją własną wersję putty, upewnij się, że ustawiłeś zmienną środowiskową GIT_SSH na ścieżkę plink dla aktualnie używanego konkursu.
shovavnik
15
Na wszelki wypadek, gdyby ktoś inny napotkał ten głupi błąd: upewnij się, że używasz formatu zdalnego adresu URL SSH (git @ host: nazwa_konta / nazwa_ reponizacji.git), a nie adresu URL HTTPS, w przeciwnym razie będzie nadal pytać o to hasło ...
Dain
Kiedy uruchamiam plink.exe [email protected], otrzymuję komunikat „BŁĄD KRYTYCZNY: serwer nieoczekiwanie zamknięty połączenie sieciowe”
Brett,
4
Uwaga: metoda trzecia została przesłana do msysgit, więc możesz po prostu wpisać start-ssh-agentwiersz poleceń, aby zapisać hasło SSH.
Matt Clarkson,
6
Trzecie rozwiązanie działa tylko do momentu zamknięcia wiersza polecenia i tylko dla tego wiersza polecenia - wszystkie inne CMD nadal proszą o hasło. Również wszyscy inni klienci (VS, VS Code) nie komunikują się ze zdalnym git.
Dima
21

Za każdym razem, gdy konfiguruję nowy pulpit, zapominam o tych instrukcjach, więc dodaję tutaj kolejną odpowiedź, ponieważ równie często ją spotykam!


Szybkie kroki dla niecierpliwych użytkowników, takich jak ja

  1. Włącz OpenSSH Authentication Agent usługę i uruchom ją automatycznie.
  2. Dodaj swój klucz SSH do agenta za pomocą ssh-add pomocą wiersza poleceń.
  3. Przetestuj integrację git, jeśli nadal prosi o podanie hasła, kontynuuj.
  4. Dodaj zmienną środowiskową $ENV:GIT_SSH=C:\Windows\System32\OpenSSH\ssh.exedo swojej sesji lub na stałe do środowiska użytkownika.

Szczegółowe kroki: przegląd

Windows od jakiegoś czasu jest dostarczany z OpenSSH. Zawiera wszystkie niezbędne bity, aby ssh działał razem z Gitem, ale nadal wydaje się, że potrzebuje trochę TLC, zanim zacznie działać w 100% bezproblemowo. Oto kroki, które z powodzeniem wykonałem od wersji Windows 10.0.18362.449 (możesz zobaczyć swoją wersję systemu Windows 10, otwierając powłokę cmd.exe i wpisującver ).

Zakładam tutaj, że masz już skonfigurowany klucz SSH i znajduje się on pod adresem ~/.ssh/id_rsa

Włącz usługę ssh-agent na swoim komputerze z systemem Windows 10.

  1. Start-> Wpisz „Usługi” i kliknij wyświetloną aplikację Usługi.
  2. Znaleźć OpenSSH Authentication Agent usługę na liście.
  3. Kliknij prawym przyciskiem myszy plik OpenSSH Authentication Agent usługę i wybierz „Właściwości”.
  4. Zmień Startup type:naAutomatic .
  5. Kliknij Startprzycisk, aby zmienić stan usługi naRunning .
  6. Zamknij okno dialogowe, klikając OKi zamknij aplikację Usługi.

Dodaj swój klucz do ssh-agent

  1. Otwórz powłokę preferencji (w tym przykładzie użyję programu Windows Powershell, dotyczy to również programu Powershell Core) .
  2. Dodaj swój klucz SSH do ssh-agent: ssh-add (możesz dodać ścieżkę do swojego klucza jako pierwszy argument, jeśli różni się od domyślnego) .
  3. Wprowadź swoje hasło, jeśli zostaniesz o to poproszony.

Wypróbuj Git + SSH

  1. Otwórz powłokę (ponownie używam Powershell) i sklonuj repozytorium.git clone [email protected]:octocat/Spoon-Knife
  2. Jeśli zobaczysz ten monit, przejdź do następnej sekcji:
Enter passphrase for key '/c/Users/your_user_name/.ssh/id_rsa':

Ustaw GIT_SSHzmienną środowiskową

W każdej sesji możesz po prostu ustawić tę zmienną środowiskową, a monit o podanie hasła przestanie się pojawiać, a ssh użyje ssh-agent w Twoim imieniu. Alternatywnie możesz na stałe ustawić swoje hasło w środowisku użytkownika.

Aby ustawić tylko GIT_SSHw bieżącej powłoce:

  1. Otwórz swoją preferowaną powłokę. (Powershell dla mnie)
  2. Ustaw zmienną środowiskową GIT_SSH na odpowiednią ssh.exe:$Env:GIT_SSH=$((Get-Command -Name ssh).Source)
  3. Ponów kroki opisane w Wypróbuj Git + SSH powyżej.

Aby ustawić na GIT_SSHstałe

  1. Otwórz Eksplorator plików. Start-> wpisz „Eksplorator plików” i kliknij go na liście.
  2. Kliknij prawym przyciskiem myszy „Ten komputer” i kliknij „Właściwości”.
  3. Kliknij „Zaawansowane ustawienia systemu”.
  4. Kliknij przycisk „Zmienne środowiskowe ...”.
  5. W sekcji „Zmienne użytkownika dla twoja_nazwa_użytkownika” kliknij Nowy ...
  6. Ustaw Variable name:pole na GIT_SSH
  7. Ustaw Variable value:pole na ścieżkę do ssh.exe (zazwyczaj C:\Windows\System32\OpenSSH\ssh.exe).
  8. Kliknij przycisk OK, aby zamknąć okno dialogowe Nowa zmienna użytkownika.
  9. Kliknij przycisk OK, aby zamknąć okno dialogowe Zmienne środowiskowe.
  10. Ponów kroki opisane w Wypróbuj Git + SSH powyżej.

Zauważ, że prawdopodobnie zmieni się to wraz z nowymi krokami / procedurami w miarę postępów w systemie Windows 10 i gdy dowiem się więcej. Postaram się to aktualizować, czekam na opinie w komentarzach.

d3r3kk
źródło
3
To jest najbardziej kompletna odpowiedź na dzień 31.01.2020, przynajmniej dla Windows. Nie ma potrzeby instalowania PUTTY ani niczego.
Jake
Zgoda. Wygląda na to, że wbudowane wsparcie jest już dostępne.
Eron Lloyd
Legenda! To rozwiązało mój problem. Szukałem rozwiązania przez jakiś czas, próbowałem różnych rzeczy i to jest najpełniejsza odpowiedź na ten problem
Collin,
Dziękuję za miłą odpowiedź, która zaoszczędziła mi zapewne kilku godzin zabawy. +1
Angry 84
20

Dla każdego, kto potrzebuje bardziej szczegółowych instrukcji, odwiedź tę stronę: http://help.github.com/working-with-key-passphrases/

Franz
źródło
Dokładnie to, czego potrzebowałem do używania msysgitpowłoki.
Arthurakay
1
Pracował dla mnie podczas korzystania z aplikacji Git Bash Desktop. Użyłem notepad ~/.profilei skopiowałem, wkleiłem zawartość z tego linku, zrestartowałem Git Bash, wprowadziłem hasło, zyskałem ...
Daryn
Śledziłem sekcję "Automatyczne uruchamianie ssh-agent na Git dla Windows" (używając git 2.x na Win 10), ale ciągle pytał mnie o hasło. Po pierwszym rozwiązaniu (kit) z zaakceptowanej odpowiedzi naprawiłem to dla mnie.
jakub.g
20

W przypadku korzystania z Git bash w systemie Windows można wykonać następujące czynności:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

zapyta o frazę hasła w drugim poleceniu i to wszystko. Każda dodatkowa czynność, którą będziesz musiał wykonać (która kiedyś wymagała frazy hasła) nie będzie wymagała podania frazy hasła (zobacz przykład na zrzucie ekranu poniżej):

dodanie frazy hasła w Git bash w systemie Windows

Guy Avraham
źródło
2
Działa to również w podsystemie Ubuntu w systemie Windows 10.
meetar
1
pamiętaj, że jeśli twoja para kluczy znajduje się w innym miejscu, możesz zastąpić ~ / .ssh / * _ rsa ścieżką do pliku * .pem
alex_danielssen
13

Jedno dodatkowe rozwiązanie 5 lat, 8 miesięcy i 6 dni po wysłaniu pytania nie byłoby złym pomysłem, więc proszę.

UWAGA: Zakładamy, że korzystasz z komputera z systemem Windows.

  1. Pobierz plik git-credential-winstore .
  2. Uruchom! Jeśli masz GIT w swojej PATHzmiennej środowiskowej, powinno po prostu działać. Jeśli nie, uciekaj git-credential-winstore -i C:\Path\To\Git.exe.

Przy następnej próbie zatwierdzenia do repozytorium zostaniesz poproszony o wprowadzenie swoich poświadczeń. To powinno być to. Nie będziesz już proszony o podanie danych uwierzytelniających, dopóki nie zmienisz hasła.


Tylko dla Twojej wiedzy ... Twoje poświadczenia są przechowywane w Sklepie poświadczeń systemu Windows

Gdzie przechowujesz moje dane logowania?

Ta aplikacja po prostu korzysta z istniejącego magazynu danych logowania systemu Windows do przechowywania danych logowania. Możesz zobaczyć zapisane poświadczenia, przechodząc do Panelu sterowania> Konta użytkowników> Menedżer poświadczeń i wybierając „Poświadczenia systemu Windows”. Wpisy rozpoczynające się od „git:” pochodzą z git-credential-winstore.

Alex Essilfie
źródło
8
Wydaje się, że to rozwiązanie nie działa z repozytoriami SSH, tylko z HTTPS. / angryface
JasonCoder
8

Jeśli ustawisz hasło dla pliku klucza, zawsze będziesz musiał wpisać to hasło podczas łączenia. Jeśli utworzysz klucz bez hasła, nie będziesz musiał go wpisywać za każdym razem, jednak każdy, kto ma dostęp do twojego pliku klucza, może teraz połączyć się z twoim kontem github.

ssh-agent może również działać. Spróbuj go uruchomić i sprawdź, czy zapamięta Twoje hasło.

Grant Limberg
źródło
uruchomienie ssh-keygen -ppowinno pozwolić OP na ustawienie hasła bez hasła
luchosrock
Nadal prosi o podanie hasła.
versedi
7

[edytuj - źle odczytałem pytanie, to jest odpowiedź na powiązany problem. pozostawienie przeformułowanej wersji dla potomności]

Mój przypadek polegał na tym, że próbowałem wypchnąć do repozytorium, które było hostowane na jednym z naszych serwerów. Za każdym razem, gdy próbowałem wykonać push, git pytał mnie o moje hasło (nb - hasło, a nie hasło do mojego klucza prywatnego).

Dodając mój klucz publiczny do autoryzowanych kluczy na serwerze, mogłem uzyskać wypychanie bez hasła do tego serwera. A ponieważ na moim kluczu prywatnym nie było hasła (co przy okazji jest złą praktyką!), Nie musiałem nic wpisywać.

Oto polecenie dodania klucza publicznego do serwera. Zakłada się, że użytkownik gitjest użytkownikiem serwera.

cat .ssh/id_rsa.pub | ssh git@GIT_MASTER_IP 'cat >> .ssh/authorized_keys'

Możesz osiągnąć to samo, logując się na serwer i ręcznie dołączając swój klucz publiczny do pliku pod adresem ~/.ssh/authorized_keys

hwjp
źródło
Czy możesz przekształcić to w opis, który będzie używany przez kogoś, kto nie ma dostępu do powłoki? Np. Co powinniśmy umieścić w autoryzowanych_kluczach używając notatnika lub czegoś podobnego?
John Little,
4

Zdaję sobie sprawę, że jest to spóźnione kilka lat, ale natknąłem się na to pytanie, próbując znaleźć rozwiązanie, i znalazłem coś, co pasuje do wszystkich poziomów wiedzy, więc pomyślałem, że się podzielę.

GitHub zapewnia bardzo pomocny instalator, który sprawia, że ​​wszystko jest przyjemne i łatwe: https://help.github.com/articles/caching-your-github-password-in-git/

roobeedeedada
źródło
Pamiętaj, że jest to buforowanie hasła GitHub , a nie hasła klucza GPG.
Judge2020
4

Załóżmy, że chciałbyś użyć czystego rozwiązania Git Bash bez używania TortoiseGit lub PuTTY. Ponadto nie chcesz przechowywać haseł na stałe, ponieważ jest to prawie to samo, co w przypadku wygenerowania klucza SSH bez hasła. Ale nadal chcesz korzystać z buforowania.

Do celów buforowania ssh-agentużywany jest proces, który jest dołączony do dystrybucji Git Bash. Ten proces nie jest uruchamiany domyślnie, więc należy go uruchomić najpierw. Aby wszystkie klucze SSH były buforowane, należy je dodać do tego procesu za pomocąssh-add polecenia, które zapyta o hasło klucza i zapisze je w pamięci.

Wady innych rozwiązań:

  • Automatyczne uruchamianie, ssh-agentjak w artykule GitHub, prosi o podanie hasła od samego początku po uruchomieniu Git Bash, niezależnie od tego, czy będziesz musiał użyć klucza SSH w tej sesji, czy nie. Jeśli dzisiaj pracujesz z lokalnym repozytorium, prawdopodobnie będziesz chciał podać hasło tylko wtedy, gdy jest to naprawdę potrzebne (np. Podczas interakcji ze zdalnym repozytorium).
  • Jeśli uruchomić ssh-agentjak w GitLab w artykule z eval $(ssh-agent -s)prawdopodobnie jesteś zmęczony wpisując, że w każdej chwili. Prawdopodobnie w końcu dodałeś te dwie linie do swojego.bashrc konfiguracji, aby automatycznie uruchamiać się. Wady są takie same jak powyżej plus jeden dodatkowy: za każdym razem, gdy uruchamiasz nowy terminal Git Bash, otrzymasz dodatkowy proces ssh-agent (skrypt bash GitHub sprawdza, czy ten proces już się rozpoczął).
  • Podobnie jak dwa powyżej, ale szczególnie, gdy masz oddzielne klucze SSH dla różnych hostów, np. Jeden dla GitHub, a drugi dla GitLab, więc podanie ich wszystkich naraz jest denerwujące i niewygodne.

To rozwiązanie jest więc dla tych, którzy zastanawiają się, jak sprawić, by Git Bash poprosił o hasło tylko raz na sesję systemu Windows i tylko wtedy, gdy jest to naprawdę potrzebne. Przypomina to zachowanie zarządzania Hasła z GnuPG zobowiązuje automatycznego podpisywania użyciu default-cache-ttl.

Konfigurowanie protokołu SSH tak, aby w razie potrzeby pytał o hasła tylko przy użyciu Git Bash

  1. Po pierwsze, chcemy automatycznie uruchamiać ssh-agentpodczas uruchamiania powłoki Git Bash. Użyjemy do tego zmodyfikowanego skryptu GitHub , ponieważ sprawdza, czy proces już się rozpoczął, ale nie chcemy, aby ssh-addod razu były klucze. Ten skrypt przechodzi do twojego ~/.bashrclub ~/.profilelub ~/.bash_profile( ~jest katalogiem domowym twojego użytkownika C:\Users\Username- uruchom, cd ~a następnie, pwdaby Git Bash go wydrukował):

    ### Start ssh-agent
    
    env=~/.ssh/agent.env
    
    agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
    
    agent_start () {
        (umask 077; ssh-agent >| "$env")  # use -t here for timeout
        . "$env" >| /dev/null ; }
    
    agent_load_env
    
    # agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
    agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
    
    if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
        agent_start
    fi
    
    unset env
  2. Teraz edytuj lub utwórz ~/.ssh/configplik i dodaj AddKeysToAgentopcję dla każdej sekcji hosta, dla której chcesz włączyć buforowanie (możesz również włączyć to globalnie, umieszczając dyrektywę na początku pliku przed wszystkimi deklaracjami hosta):

    # GitHub.com
    Host github.com
      Preferredauthentications publickey
      IdentityFile ~/.ssh/id_ed25519_github
      AddKeysToAgent yes
    
    # GitLab.com
    Host gitlab.com
      Preferredauthentications publickey
      IdentityFile ~/.ssh/id_ed25519_gitlab
      AddKeysToAgent yes

    Z ssh config człowieka stronie : Jeśli ta opcja jest ustawiona na Tak, a kluczowym jest ładowany z pliku, klucz i jego hasło zostaną dodane do środka z domyślnym całe życie, tak jakby przez ssh-add (1).

Domyślny maksymalny czas życia jest wieczny lub do momentu, gdy ssh-agentproces zostanie zabity (ręcznie z menedżera zadań lub po wyłączeniu komputera). Jeśli chcesz użyć skończonego limitu czasu, możesz ustawić go za pomocą parametru ssh-agent -t. Zmień linię w skrypcie bash z pierwszego kroku powyżej, np. Na 30 minut czasu życia pamięci podręcznej kluczy:

(umask 077; ssh-agent -t 30m >| "$env")

Zobacz tutaj inne kwalifikatory formatu czasu.

Nikolay Kotlyarov
źródło
3

Możesz utworzyć .bashrcplik w katalogu domowym swojego użytkownika C:/Users/youruseri umieścić tam:

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

Ten skrypt jest wykonywany za każdym razem po uruchomieniu basha. Będziesz więc musiał wprowadzić hasło tylko raz, po git-bashuruchomieniu!

Niektóre wersje basha wymagają .bash_profilezamiast tego pliku .bashrc, więc na wszelki wypadek klon .bashrc:

copy .bashrc .bash_profile
Alexander Goncharov
źródło
1

możesz spróbować dodać -k arg, kiedy to zrobisz;

ssh-add -k ~/.ssh/id_rsa
tarikakyol
źródło