Keychain nie pamięta mojego hasła SSH podczas łączenia się z serwerem

5

Rutynowo rozwijam się na dwóch różnych serwerach.

Jeden serwer wymaga mojego prywatnego klucza SSH przechowywanego w ~/.ssh/id_rsa. Ta część historii działa dobrze.

Drugi serwer nie powinien wymagać żadnych kluczy SSH, ale OSX pokazuje mi to hasło przy każdym połączeniu:

Wprowadź hasło do klucza SSH „id_rsa”.

Nie ma znaczenia, czy nacisnę OK, czy Anuluj, ponieważ na serwerze nie ma klucza publicznego. I oczywiście nie ma też hasła.

Dlaczego okno dialogowe hasła nie pamięta mojego hasła w pęku kluczy? Po sprawdzeniu, w aplikacji Keychain Access pojawia się element SSH, ale monit jest nadal wyświetlany za każdym razem, gdy przesyłam SFTP lub SSH do serwera.

Domyślam się, że może to mieć związek ze źle skonfigurowanym serwerem lub faktem, że nazwa użytkownika, z którą się łączę, jest taka sama dla obu serwerów. Jeśli mógłbyś potwierdzić, że problem jest jednym z tych, byłby pomocny, dziękuję.

Joen
źródło

Odpowiedzi:

5

Istnieje wiele sprzecznych informacji, które czytałem za każdym razem, gdy szukam informacji o korzystaniu ssh-agent(proces zapisywania / ponownego użycia hasła) w systemie Mac OS X. Większość zasobów wydaje się sugerować, że zwykłe wydanie ssh-add -Kpozwoli ci przechowywać twoje hasło i automatycznie skonfiguruje system operacyjny X, aby uruchomić się ssh-agentautomatycznie i załadować zapisane hasło.

Uwaga: Bieg ssh-add -Kbędzie działać tylko wtedy, gdy masz swój plik klucza prywatnego w jednej z typowych miejsc, te miejsca są ograniczone do: ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/identity. Jeśli plik znajduje się gdziekolwiek indziej, należy podać tę ścieżkę po -K w powyższym poleceniu.


Powód, dla którego pojawia się okno dialogowe hasła pliku klucza podczas łączenia się z drugim serwerem (bez klucza), jest prawdopodobne, ponieważ domyślna konfiguracja serwerów SSH polega na pierwszym użyciu uwierzytelniania za pomocą klucza publicznego, a następnie na uwierzytelnianiu „interaktywnym za pomocą klawiatury”.

Ponieważ masz klucz publiczny o standardowej nazwie / lokalizacji ( ~/.ssh/id_rsa), twój klient OpenSSH pomaga authorized_keysprzesłać klucz prywatny, aby umożliwić serwerowi dopasowanie go do dozwolonego pliku.

Istnieje kilka sposobów, aby temu zapobiec, najłatwiejszym sposobem jest przekazanie flagi w wierszu polecenia lub dodanie jej jako stałego elementu konfiguracji w ~/.ssh/configpliku.

  1. Podczas łączenia z serwerem dodatkowym / bez klucza można dodać -o „PubkeyAuthentication = no” podczas łączenia. Coś jak ssh -o "PubkeyAuthentication=no" me@devserver2.

  2. Otwórz ~/.ssh/configw swoim ulubionym edytorze tekstu, utwórz go najpierw, jeśli musisz, i wprowadź następujące dane:

    Host devserver2  
        User me  
        PubkeyAuthentication no
    

Teraz, jeśli po prostu wpiszesz ssh devserver2nazwę użytkownika, konfiguracja klucza publicznego zostanie wczytana i użyta, i powinieneś zostać poproszony o podanie hasła i nic więcej.

( Uwaga: Zamień devserver2 na rzeczywistą nazwę hosta serwera. Alternatywnie, wybierz ładną nazwę hosta, taką jak devserver2, i dodaj właściwość między User a PubkeyAuthentication o nazwie „Hostname” i umieść tam nazwę lub adres IP serwera. Następnie, możesz po prostu wpisać „ssh devserver2”, a wszystkie właściwości konfiguracji będą działać zgodnie z nimi.)

Jason Salaz
źródło
3

Wygląda na to, że twój klucz prywatny (~ / .ssh / id_rsa na komputerze lokalnym) jest zaszyfrowany hasłem, więc gdy ssh próbuje użyć klucza do uwierzytelnienia, prosi o podanie tego hasła.

Jeśli łączysz się przez terminal, ssh -o "PubkeyAuthentication=no" your.server.comsprawdź, czy nadal wyświetla monit.

Mimo to Lion cały czas prosi mnie o hasło do mojego klucza prywatnego i nie chce go zapisać. Nie rozwiązałem jeszcze tego problemu.

nheinrichs
źródło