Jeśli używasz SSH i klucz prywatny jest zaszyfrowany za pomocą hasła, a następnie będziesz nadal być poproszony o wprowadzić hasło / hasło do klucza prywatnego podczas wykonywania operacji sieciowych z Git jak push
, pull
i fetch
.
Użyj ssh-agent, aby zapisać hasło / hasło do klucza prywatnego
Jeśli chcesz uniknąć konieczności wpisywania hasła za każdym razem, możesz użyć ssh-agent
do zapisywania poświadczeń hasła prywatnego raz na sesję terminalową, jak wyjaśniam w mojej odpowiedzi na Nie można otworzyć połączenia z agentem uwierzytelniającym :
$ eval `ssh-agent -s`
$ ssh-add
W Windows msysgit Bash musisz ocenić dane wyjściowe ssh-agent
, ale nie jestem pewien, czy musisz zrobić to samo w innych środowiskach programistycznych i systemach operacyjnych.
ssh-add
szuka w prywatnym .ssh
folderze domowym klucza prywatnego o nazwie id_rsa
domyślnej, ale ścieżkę pliku można przekazać do klucza o innej nazwie.
Zabicie agenta
Po zakończeniu sesji terminalu możesz zamknąć ssh-agent
flagę kill -k
:
$ ssh-agent -k
Jak wyjaśniono w ssh-agent
instrukcji :
-k
Zabij bieżącego agenta (podanego przez zmienną środowiskową SSH_AGENT_PID).
Opcjonalny limit czasu
Może również zająć opcjonalny parametr limitu czasu, taki jak:
$ ssh-add -t <timeout>
gdzie <timeout>
jest formatem <n>h
dla <n>
godzin <n>m
na <n>
minuty, i tak dalej.
Zgodnie z ssh-agent
instrukcją :
-t life
Ustaw wartość domyślną dla maksymalnego okresu istnienia tożsamości dodanych do agenta. Czas życia można określić w sekundach lub w formacie czasu określonym w sshd_config (5) . Okres istnienia określony dla tożsamości z ssh-add (1) przesłania tę wartość. Bez tej opcji domyślny maksymalny okres użytkowania jest wieczny.
Zobacz tę stronę, aby uzyskać więcej formatów czasu .
Ostrzeżenie bezpieczeństwa dla użytkowników Cygwin
Użytkownicy Cygwin powinni zdawać sobie sprawę z potencjalnego zagrożenia bezpieczeństwa podczas korzystania z ssh-agent w Cygwin :
ludzie powinni być świadomi potencjalnych zagrożeń związanych z ssh-agent w Cygwin 1 , chociaż pod lokalną siecią i zdalnym portemcan nie wydaje się, aby port określony w / tmp / ssh-foo był dostępny dla każdego ...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
I pod cytowanym linkiem :
zauważ jednak, że gniazda domenowe Cygwina są PODSTAWOWO NIEBEZPIECZNE, dlatego zdecydowanie ODKRYJEM używanie ssh-agent pod Cygwin.
po uruchomieniu ssh-agent w Cygwin tworzy on gniazdo AF_UNIX w /tmp/ssh-$USERNAME/
katalogu. Pod Cygwin AF_UNIX gniazda są emulowane przez gniazda AF_INET. Możesz łatwo to zobaczyć, jeśli zajrzysz do /tmp/ssh-$USERNAME/agent-socket-*
pliku za pomocą Notatnika. Zobaczysz coś takiego
!<socket >2080
następnie biegnij netstat -a
i zaskocz się! Masz jakiś program nasłuchujący na porcie 2080. To ssh-agent. Gdy ssh otrzymuje wyzwanie RSA od serwera, odnosi się do odpowiedniego /tmp/ssh-$USERNAME/agent-socket-*
(w naszym przypadku Cygwin oznacza to, że otworzy połączenie localhost:2080
) i prosi ssh-agent o przetworzenie wyzwania RSA za pomocą klucza prywatnego, który ma, a następnie po prostu przekazuje odpowiedź otrzymaną od agenta ssh na serwer.
W systemie Unix taki scenariusz działa bez problemów, ponieważ jądro systemu Unix sprawdza uprawnienia, gdy program próbuje uzyskać dostęp do gniazda AF_UNIX. Jednak w przypadku gniazd AF_INET połączenia są anonimowe (czytaj „niepewne”). Wyobraź sobie, że masz uruchomionego agenta ssh Cygwin. Złośliwy haker może przeskanować twoje urządzenie, zlokalizować otwarty port używany przez ssh-agent, otworzyć połączenie z serwerem SSH, otrzymać od niego wyzwanie RSA, wysłać go do twojego ssh-agent przez otwarty port, który znalazł, odebrać Odpowiedź RSA, wyślij ją na serwer SSH i voila, on / ona pomyślnie zalogował się na twój serwer jako ty.