Rozumiem, że od czasu Mac OS X Leopard Keychain obsługuje przechowywanie kluczy SSH. Czy ktoś mógłby wyjaśnić, jak ta funkcja powinna działać.
Mam wygenerowane klucze RSA przechowywane w moim katalogu ~ / .ssh do uzyskiwania dostępu do różnych serwerów. Nie mam ustawionych haseł na tych kluczach. Obecnie, aby zalogować się do tych serwerów, używam następujących poleceń w terminalu:
eval `ssh-agent` ssh-add ~ / .ssh / some_key_rsa ssh użytkownik @ serwer
(Napisałem kilka funkcji Bash, aby to ułatwić).
Czy jest lepszy sposób na zrobienie tego za pomocą pęku kluczy?
ssh-add
aby dodać moje tożsamości RSA do domyślnego agenta ssh uruchomionego przy logowaniu?$HOME/.ssh/authorized_keys
na tym serwerze. Agent ssh + keychain w systemie Mac OS służy wyłącznie do przechowywania hasła dla lokalnych kluczy ssh; nie ma na celu wysyłania zdalnych haseł przez istniejące połączenia ssh.ssh -v
do diagnozowania tego, co robi ssh. użyj takżesshd -p 8900 -v
po stronie serwera issh -v remote:8900
zdiagnozuj, co robi sshd.Od wydania systemu Leopard OS X ssh-agent jest ściślej zintegrowany z Keychain. Możliwe jest bezpieczne przechowywanie haseł wszystkich kluczy SSH w pęku kluczy, z którego ssh-agent odczyta je podczas uruchamiania. Najważniejsze jest to, że łatwo jest zabezpieczyć klucze hasłami, ale nigdy nie trzeba wpisywać hasła, aby ich użyć! Oto jak:
Dodaj hasło do każdego klucza ssh do pęku kluczy: (opcja -k ładuje tylko zwykłe klucze prywatne, pomija certyfikaty)
(uwaga, że to wielka litera K)
Po każdym ponownym uruchomieniu komputera Mac wszystkie klucze SSH w pęku kluczy zostaną automatycznie załadowane. Powinieneś być w stanie zobaczyć klucze w aplikacji Dostęp do pęku kluczy, a także z wiersza poleceń za pośrednictwem:
źródło
ssh-add -l
nie wyświetla żadnych kluczy podczas zdalnego łączenia (gdzie nie ustawiono $ DISPLAY). Aby skorzystać z pęku kluczy, należy zastosować specjalne sztuczki (np. W superuser.com/questions/141044/… )/usr/bin/ssh-add
.ssh-add -l
zwraca „Agent nie ma tożsamości”. (ps aux
obejmuje/usr/bin/ssh-agent -l
).Począwszy od systemu macOS Sierra , ssh-agent nie ładuje już automatycznie załadowanych wcześniej kluczy ssh po zalogowaniu się na swoje konto. Jest to celowe ze strony Apple, chcieli oni ponownie dostosować do głównego nurtu implementacji OpenSSH . [1]
Jak wyjaśniono tutaj , jest to zalecana metoda od macOS 10.12.2 :
Dodaj następujące wiersze do
~/.ssh/config
pliku:Każdy klucz dodany do ssh-agent za pomocą
ssh-add /path/to/your/private/key/id_rsa
polecenia zostanie automatycznie dodany do pęku kluczy i powinien zostać automatycznie załadowany po ponownym uruchomieniu.Poniższe informacje są nieaktualne (przechowywane w celach informacyjnych).
Aby powrócić do poprzedniego zachowania,
ssh-add -A
po zalogowaniu należy uruchomić polecenie (które automatycznie ładuje wszystkie klucze ssh, które mają frazę kluczową). Aby to zrobić, wykonaj następujące kroki:Najpierw dodaj wszystkie klucze, które chcesz automatycznie załadować do ssh-agent za pomocą
ssh-add -K /absolute/path/to/your/private/key/id_rsa
polecenia.-K
Argumentem zapewnia, że klucz pass-fraza zostanie dodany do pęku kluczy na MacOS . Upewnij się, że używasz bezwzględnej ścieżki do klucza. Użycie ścieżki względnej sprawi, że automatycznie uruchamiany skrypt nie znajdzie klucza.Upewnij się, że podczas wpisywania wszystkie klucze są wyświetlane jako dodane
ssh-add -A
.Utwórz plik o nazwie
com.yourusername.ssh-add.plist
w~/Library/LaunchAgents/
z poniższej treści. Pliki Plist, takie jak ten, są używanelaunchd
do uruchamiania skryptów podczas logowania. [2] [3]Powiedzieć
launchd
, aby załadować plik plist właśnie utworzony przez wykonanie:launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist
.I powinieneś być gotowy.
źródło
Jest prostszy sposób niż odpowiedź Ricardo na utrwalenie hasła między sesjami / restartami komputera Mac z systemem 10.12 Sierra.
ssh-add -K ~/.ssh/id_rsa
Uwaga: zmień ścieżkę do miejsca, w którym znajduje się klucz id_rsa.
ssh-add -A
Utwórz (lub edytuj, jeśli istnieje) następujący
~/.ssh/config
plik:Teraz hasło jest zapamiętywane między restartami!
Firma Apple celowo zmieniła zachowanie ssh-agent w systemie macOS 10.12 Sierra, aby nie ładować automatycznie poprzednich kluczy SSH, jak zauważono w tej dyskusji na temat OpenRadar , Twittera i uwagi technicznej od Apple . Powyższe rozwiązanie naśladuje stare zachowanie El Capitan i zapamiętuje hasło.
źródło
ssh-add -K
aby dodać mój klucz SSH do pęku kluczy Apple, jaka jest nazwa i typ wpisu pokazanego w Keychain Access.app?Uwaga: w przypadku systemu macOS Sierra zapoznaj się z najnowszą odpowiedzią autorstwa ChrisJF .
[Odpowiedź Jeffa McCarrella] [2] jest poprawna, z tą różnicą, że polecenie dodania hasła zawiera myślnik zamiast myślnika, tzn.
–K
Zamiast-K
powoduje wyświetlenie komunikatu–K: No such file or directory
. Powinien brzmieć:źródło
ssh-add -K
illegal option -- K
. Mała k jest wymieniona jako opcja.-K
tj. Dash-capital-K jest nadal ważnyPodejrzewam, że nie używasz domyślnego
ssh
polecenia. Czyssh
zainstalowałeś przez porty? Spróbujwhich ssh
sprawdzić, któregossh
polecenia używasz.Zwykle powinien wyświetlać okno dialogowe z prośbą o podanie hasła, jeśli nie jest już zapisane w pęku kluczy.
źródło
Miałem podobny problem podczas próby logowania za pomocą certyfikatu ssh klienta. W tym konkretnym przypadku chodziło o dostęp do repozytorium git. To była sytuacja:
~/.ssh/
~/Library/Keychains/login.keychain
->
zdalny->
serwer mac git / sshKiedy połączyłem się ze zdalnym komputerem Mac za pomocą zdalnego pulpitu, nie miałem problemu. Jednak podczas łączenia się z SSH do zdalnego komputera Mac byłem proszony o hasło ssh za każdym razem. Poniższe kroki rozwiązały to dla mnie.
security unlock-keychain
Hasło jest przechowywane w pęku kluczy logowania. To odblokowuje i umożliwia ssh-agentowi dostęp do niego.eval `ssh-agent -s`
Uruchamia ssh-agent w celu użycia powłoki. Otrzyma hasło z pęku kluczy i użyje go do odblokowania prywatnego klucza ssh.eval `ssh-agent -k`
Zabij działającego agenta ssh.security lock-keychain
Zablokuj brelok ponownie.źródło
eval \$(ssh-agent)
Per Re: zdalnego logowania i pęku kluczy . Gdy nie znajduje się w aliasieeval $(ssh-agent)
( bez ukośnika $ ).Zobacz też:
... dodając tę notatkę, ponieważ zażądano więcej szczegółów: polecenie „bezpieczeństwo” może importować klucze (i inne rzeczy) bezpośrednio do pęku kluczy. Zaletą jest to, że w przeciwieństwie do ssh-add, możesz określić pęku kluczy. Umożliwia to importowanie bezpośrednio do systemu pęku kluczy („bezpieczeństwo człowieka”, aby dowiedzieć się, jak to zrobić)
źródło
Najlepsze rozwiązanie przeznaczone dla Apple (od macOS 10.12.2) jest opisane tutaj
źródło
>>
jest zagrożone, jeśli wprowadzisz polecenie wiele razy. Lepiej wykonaj ręczną edycję pliku, jak opisano w odpowiedzi ChrisJF .