Jak mogę na stałe dodać mój klucz prywatny SSH do pęku kluczy, aby był automatycznie dostępny dla ssh?

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

  • Może powiesz trochę więcej o tym, kiedy pojawia się monit o hasło? Pytam, ponieważ mam klucz SSH do zdalnego serwera. Zapewniam, że nie jest to to samo, co hasło logowania do mojego komputera Mac lub coś w tym stylu, i nie ' nie musiałem wprowadzać hasło do klucza ssh na lata . Mogę po prostu otworzyć terminal, wpisać " ssh < server > " i jestem tam '. Myślę, że najpierw ustawiłem ten klucz pod OSX 10.5. id_dsa, ale nie ' uważam, że to powinno mieć znaczenie.
  • Mój klucz id_rsa ma hasło.
  • Mam również problem, który rozwiązałem tak dawno temu, że nie mogę ' nie pamiętać dokładnie, co zrobiłem. Ale myślę , że chodzi o to, aby nie uruchamiać 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.
  • @Sorin – moje też! Musiałem do niego kiedyś wejść, dawno temu i od tego czasu Mac zapisuje go dla mnie. Miejmy nadzieję, że rada Haralda ' pomoże.
  • Czy masz na myśli hasło pęku kluczy (czyli hasło logowania) czy klucz ' s hasło? Jeśli to ' to drugie, czy Twoje hasła są na pewno przechowywane w pęku kluczy? Możesz to sprawdzić, otwierając Dostęp do pęku kluczy i szukając go w pęku kluczy logowania.

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

  1. Upewnij się, że wykonałeś Krok 1 powyżej, aby zapisać klucz w pęku kluczy.

  2. Jeśli jeszcze tego nie zrobiłeś, utwórz plik ~/.ssh/config. Innymi słowy, w katalogu .ssh w swoim katalogu domowym plik o nazwie config.

  3. 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ż wiersz IdentityFile dla każdego z nich. Na przykład mam jedną dodatkową linię, która brzmi IdentityFile ~/.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.

  4. 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 flagi K, 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. Zobacz man 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!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *