Wygląda na to, że ssh-add -K ~/.ssh/id_rsa
załaduje twój klucz, ale zapyta o hasło przy każdym ponownym uruchomieniu.
Szukam rozwiązania, które nie wymagałoby ponownego wprowadzania hasła klucza między logowaniami.
Komentarze
Odpowiedź
W systemie OSX , natywny klient ssh-add
ma specjalny argument do zapisania hasła klucza prywatnego w pęku kluczy OSX, co oznacza, że normalne logowanie odblokuje je do użytku z ssh. W systemie OSX Sierra i później, musisz także skonfigurować SSH, aby zawsze używał pęku kluczy (zobacz krok 2 poniżej).
Alternatywnie możesz użyć klucza bez hasła, ale jeśli wolisz zabezpieczenia, które są z pewnością akceptowalne w przypadku ten przepływ pracy.
Krok 1 – Przechowaj klucz w pęku kluczy
Zrób to raz:
ssh-add -K ~/.ssh/[your-private-key]
Wprowadź swoje hasło, a nie zostaniesz o nie ponownie poproszony.
(Jeśli używasz systemu OSX w wersji starszej niż Sierra, oznacza to, że krok 2 nie jest wymagany).
Krok 2 – Skonfiguruj SSH tak, aby zawsze używał pęku kluczy
Wygląda na to, że OSX Sierra usunął wygodne zachowanie utrwalania kluczy między logowaniami, a aktualizacja ssh nie używa już domyślnie pęku kluczy. Z tego powodu po uaktualnieniu i ponownie po każdym ponownym uruchomieniu zostanie wyświetlony monit o wprowadzenie hasła do klucza.
Rozwiązanie jest dość proste i zostało opisane w ten komentarz do wątku na githubie . Oto jak to skonfigurować:
-
Upewnij się, że wykonałeś Krok 1 powyżej, aby zapisać klucz w pęku kluczy.
-
Jeśli jeszcze tego nie zrobiłeś, utwórz plik
~/.ssh/config
. Innymi słowy, w katalogu.ssh
w swoim katalogu domowym plik o nazwieconfig
. -
W tym pliku
.ssh/config
dodaj następujące wiersze :Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
Zmień
~/.ssh/id_rsa
na rzeczywistą nazwę pliku swojego klucza prywatnego. Jeśli masz inne klucze prywatne w swoim~/.ssh
, dodaj też wierszIdentityFile
dla każdego z nich. Na przykład mam jedną dodatkową linię, która brzmiIdentityFile ~/.ssh/id_ed25519
dla drugiego klucza prywatnego.UseKeychain yes
jest kluczową częścią, która mówi SSH, aby szukał klucza w pęku kluczy OSX hasło. -
To wszystko! Następnym razem, gdy załadujesz jakiekolwiek połączenie ssh, spróbuje ono kluczy prywatnych, które podałeś, i będzie szukać ich hasła w pęku kluczy OSX. Nie jest wymagane wpisywanie hasła.
Komentarze
- @Poulsbo & @Abram – zobacz moją aktualizację, Sierra zmieniła automatyczne zachowanie i teraz musisz uruchomić
ssh-add -A
ręcznie, aby wczytać zapisany pęk kluczy. Niektóre możliwe rozwiązania wymienione powyżej. - @trisweb Dzięki za wskazówkę. joshbuchea ' do modyfikacji pliku
.ssh/config
wygląda obiecująco! Zobacz github.com/lionheart/openradar-mirror/issues/… - Działa świetnie!W moim przypadku musiałem użyć flagi
A
oprócz flagiK
, aby dodać moje klucze do pęku kluczy i zarejestrować hasło w it (ssh-add -AK ~/.ssh/[your-private-key]
). Dzięki! - Nawet z opcją usekeychain nadal uważam, że mój pęku kluczy upuszcza klucz .ssh / id_rsa przy ponownym uruchomieniu.
- Zrobiłem dokładnie to samo, a mój Mac nadal upuszcza klawisz przy ponownym uruchomieniu.
Odpowiedź
Miałem podobny problem, w którym pytano mnie za każdym razem dla mojego hasła klucza pubu. Zgodnie z sugestią użytkownika „trisweb” powyżej, włączyłem te opcje, aby ~/.ssh/config
:
Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
Ale wciąż pojawiał się monit za każdym razem, gdy chciałem użyć ssh. W końcu włączyłem ssh -v
i znalazłem ten wiersz debugowania:
debug1: key_load_private: incorrect passphrase supplied to decrypt private key
Następnie otworzyłem mój pęku kluczy w „Dostęp do pęku kluczy .app ”, znalazł klucz o nazwie„ SSH: /Users/username/.ssh/id_rsa ”i otworzył go. Kliknąłem „Pokaż hasło”, aby ujawnić hasło i rzeczywiście stwierdziłem, że hasło w zestawie kluczy było starym hasłem. Zaktualizowałem hasło dostępu do pęku kluczy i teraz działa bez hasła.
Mogłem również zaktualizować hasło o następującą frazę:
ssh-keygen -p -f ~/.ssh/id_rsa
Komentarze
- Na moim Macu hasło jest zapisywane w kategorii „hasło” łańcucha „iCloud”. Myślałem, że to łańcuch „zaloguj się”.
Odpowiedź
Do wszystkich, w których powyższe nie działa , wydaje się, że moim problemem było powielanie UseKeychain yes
& AddKeysToAgent yes
we wszystkich ssh profile / skróty klawiszowe. Zaktualizowałem mój plik ~/.ssh/config
, aby zadeklarował je tylko raz i teraz wszystkie ładują się przy logowaniu bez pytania o hasło przy uruchomieniu, np .:
Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/foo IdentityFile ~/.ssh/bar Host foo HostName foo.com User fooUser IdentityFile ~/.ssh/foo Host bar HostName bar.com User barUser IdentityFile ~/.ssh/bar
Komentarze
- Zalecam stosowanie
Host *
po określonych zasadach dotyczących hosta. Zobaczman ssh_config
, aby uzyskać szczegółowe informacje.
Odpowiedź
Również w macOS Sierra i HighSierra (nie wiem o poprzednich wersjach), uruchomienie ssh-add -A
spowoduje, że agent załaduje wszystkie klucze, których hasła są przechowywane w pęku kluczy … Bardzo przydatne
Odpowiedź
Dodaj klucz publiczny w:
.ssh/known_hosts
Publiczny zazwyczaj są włączone:
/home/user/.ssh/id_rsa.pub
Mam nadzieję, że to pomoże
Komentarze
- Myślę, że
authorized_keys
- W każdym razie to nie ' nie działa, jeśli masz więcej niż jeden klucz!
id_rsa
ma hasło.ssh-add
, ale po prostu uruchomićssh
bezpośrednio. Powinno pojawić się okienko, które będzie frazą hasła dla klucza i będzie zawierać pole wyboru umożliwiające przechowywanie go w pęku kluczy.