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':
GIT_SSH
w 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.Odpowiedzi:
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.
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.
Otwórz wiersz polecenia.
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).
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ę.
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.
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ń.
start-ssh-agent
źródło
start-ssh-agent
wiersz poleceń, aby zapisać hasło SSH.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
OpenSSH Authentication Agent
usługę i uruchom ją automatycznie.ssh-add
pomocą wiersza poleceń.$ENV:GIT_SSH=C:\Windows\System32\OpenSSH\ssh.exe
do 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ąc
ver
).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.
OpenSSH Authentication Agent
usługę na liście.OpenSSH Authentication Agent
usługę i wybierz „Właściwości”.Startup type:
naAutomatic
.Start
przycisk, aby zmienić stan usługi naRunning
.OK
i zamknij aplikację Usługi.Dodaj swój klucz do
ssh-agent
ssh-agent
:ssh-add
(możesz dodać ścieżkę do swojego klucza jako pierwszy argument, jeśli różni się od domyślnego) .Wypróbuj Git + SSH
git clone [email protected]:octocat/Spoon-Knife
Ustaw
GIT_SSH
zmienną ś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_SSH
w bieżącej powłoce:ssh.exe
:$Env:GIT_SSH=$((Get-Command -Name ssh).Source)
Aby ustawić na
GIT_SSH
stałeVariable name:
pole na GIT_SSHVariable value:
pole na ścieżkę do ssh.exe (zazwyczajC:\Windows\System32\OpenSSH\ssh.exe
).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.
źródło
Dla każdego, kto potrzebuje bardziej szczegółowych instrukcji, odwiedź tę stronę: http://help.github.com/working-with-key-passphrases/
źródło
msysgit
powłoki.notepad ~/.profile
i skopiowałem, wkleiłem zawartość z tego linku, zrestartowałem Git Bash, wprowadziłem hasło, zyskałem ...W przypadku korzystania z Git bash w systemie Windows można wykonać następujące czynności:
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):
źródło
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.
PATH
zmiennej środowiskowej, powinno po prostu działać. Jeśli nie, uciekajgit-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
źródło
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.
źródło
ssh-keygen -p
powinno pozwolić OP na ustawienie hasła bez hasła[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
git
jest użytkownikiem serwera.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
źródło
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/
źródło
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-agent
uż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ń:
ssh-agent
jak 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).ssh-agent
jak w GitLab w artykule zeval $(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ął).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
Po pierwsze, chcemy automatycznie uruchamiać
ssh-agent
podczas uruchamiania powłoki Git Bash. Użyjemy do tego zmodyfikowanego skryptu GitHub , ponieważ sprawdza, czy proces już się rozpoczął, ale nie chcemy, abyssh-add
od razu były klucze. Ten skrypt przechodzi do twojego~/.bashrc
lub~/.profile
lub~/.bash_profile
(~
jest katalogiem domowym twojego użytkownikaC:\Users\Username
- uruchom,cd ~
a następnie,pwd
aby Git Bash go wydrukował):Teraz edytuj lub utwórz
~/.ssh/config
plik i dodajAddKeysToAgent
opcję 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):Domyślny maksymalny czas życia jest wieczny lub do momentu, gdy
ssh-agent
proces 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:Zobacz tutaj inne kwalifikatory formatu czasu.
źródło
Możesz utworzyć
.bashrc
plik w katalogu domowym swojego użytkownikaC:/Users/youruser
i umieścić tam:Ten skrypt jest wykonywany za każdym razem po uruchomieniu basha. Będziesz więc musiał wprowadzić hasło tylko raz, po
git-bash
uruchomieniu!Niektóre wersje basha wymagają
.bash_profile
zamiast tego pliku.bashrc
, więc na wszelki wypadek klon.bashrc
:źródło
możesz spróbować dodać -k arg, kiedy to zrobisz;
źródło