Mam pewne problemy z SSH KeychainIntegration w OS X Mavericks. Próbowałem przeszukiwać witrynę pomocy technicznej Apple, ale nie widziałem, żeby ktoś miał mój problem. I widziałem wielu ludzi, którzy pozornie nie wiedzą, jak korzystać z SSH, że dobrze, więc postanowiłem spróbować innej społeczności.
Po pierwsze, moja konfiguracja działa. Jestem w stanie używać mojej pary kluczy i ssh do hostów w razie potrzeby, a moje poświadczenia są buforowane w agencie. Jestem w stanie zobaczyć moje poświadczenia zapisane w pamięci podręcznej za pomocą „ssh-add -l”, zgodnie z oczekiwaniami. Zostaję poproszony o podanie hasła za pomocą okna dialogowego w stylu OS X, z polem wyboru z napisem „Zapamiętaj hasło w moim pęku kluczy”. Zazwyczaj ignoruję to pole wyboru, ale kiedy je zaznaczam, widzę, że mój klucz jest przechowywany w pęku kluczy. Jednak klucz przechowywany w pęku kluczy najwyraźniej nigdy nie jest używany, ponieważ mam na nim hasło. Przynajmniej tyle zebrałem z różnych rzeczy, które przeczytałem. Kiedy wprowadzam hasło do okna dialogowego, a klucz jest buforowany w agencie, nawiązuję połączenie, ale nie zanim usłyszę komunikat „Zapisywanie hasła do pęku kluczy nie powiodło się”. Widzenie tego komunikatu o błędzie skłoniło mnie do dalszego zbadania; Nie lubię pojawiać się błędu przy każdym połączeniu.
Ciekawie robi się patrząc na stronę SSH_CONFIG (5) . Istnieją dwie opcje postępowania z pękiem kluczy, specyficzne dla Apple: AskPassGUI i KeychainIntegration. Możesz przełączać je w ~ / .ssh / config, a to daje interesujące wyniki.
Ustawienie AskPassGUI na no spowoduje, że nie będzie już wyświetlane okno dialogowe w stylu OS X, a zamiast tego linia tekstu w terminalu. Nic takiego. Ale jeśli to zrobisz, ssh-agent nie buforuje twoich danych uwierzytelniających. Jest to po prostu zepsute i frustrujące, ponieważ mógłbym łatwo żyć z monitem tekstowym, gdyby dane uwierzytelniające były buforowane.
Ustawienie KeychainIntegration na no, ssh generuje twardy błąd, jak następuje:
~/.ssh/config: line 11: Bad configuration option: KeychainIntegration
~/.ssh/config: terminating, 1 bad configuration options
Moje pytanie po prostu brzmi: czy istnieje sposób, aby faktycznie wyłączyć integrację pęku kluczy OS X dla SSH?
Odpowiedzi:
Na podstawie kodu źródłowego bieżącej wersji SSH, która jest dostarczana z Mavericks (znajduje się tutaj ), wydaje się, że funkcjonalność opcji konfiguracji
KeychainIntegration
nie została jeszcze zaimplementowana. Przyjmuję to założenie na podstawie zawartości openssh / readconf.h , która nie odwołuje się doKeychainIntegration
opcji. Odnosi się jednak doaskpassgui
opcji. Sprawdzanie struktury „słów kluczowych” w tym pliku rzeczywiście pokazuje, żekeychainintegration
opcja nie jest obecna (co z kolei oznacza, żeoBadOption
zostanie zwrócony kod operacji (NULL)).Kolejną wskazówką sugerującą, że pożądana funkcjonalność nie jest zaimplementowana w sposób określony przez stronę podręcznika, jest plik: openssh / keychain.c . Kod źródłowy faktycznie pokazuje, że
defaults
system (tj. Pliki listy właściwości) jest używany do przechowywania ustawień związanych zKeychainIntegration
. W szczególności wiersze zstore_in_keychain
odwołania do funkcji KeychainIntegration:Oto odpowiednia
get_boolean_preference
funkcja. Pamiętaj, że używa goCFPreferencesCopyAppValue
do uzyskania wartości logicznej z identyfikatora aplikacji „org.openbsd.openssh”:Może to oznaczać, że możesz sam wyłączyć tę
KeychainIntegration
funkcję, wykonując następujące polecenie domyślne:defaults write org.openbsd.openssh KeychainIntegration -bool NO
lub ustawić dla wszystkich użytkowników:
sudo defaults write /Library/Preferences/org.openbsd.openssh KeychainIntegration -bool NO
źródło
KeychainIntegration
, abyNO
poprzezdefaults
jak sugeruje.ssh
następnie zachowuje się tak, jakby ustawićAskPassGUI
w~/.ssh/config
- brak poświadczenia są buforowane, a ja zapytany o hasłem przez cały czas. Mniej niż przydatne. Myślę jednak, że odpowiedziałeś na pytanie, a odpowiedź brzmi: „Można to wyłączyć, ale nie jest w pełni zaimplementowane i prawdopodobnie nie polubisz wyników”.