Dlaczego automatyczne logowanie przez ssh z uprawnionymi kluczami nie działa?


12

Utworzyłem prywatną / publiczną parę kluczy dsa. Włożyłem klucz publiczny na serwer

~/.ssh/authorized_keys

Wszystko jest skonfigurowane jak mój drugi serwer, ale wygląda na to, że serwer po prostu ignoruje moje wysiłki.


Sprawdź /etc/ssh/ssh_configi /etc/ssh/sshd_configsprawdź, czy nic, co chcesz, jest wyłączone.
Kristopher Johnson

Będziesz także chciał sprawdzić sshd_config.
Vagnerr

Dzięki. Zaktualizowałem odpowiedź (która pierwotnie wspomniała tylko o ssh_config).
Kristopher Johnson

Wszystkie powyższe dyskusje są idealne, jeśli używasz ssh w stylu openssh. Jeśli używasz ssh2, masz zupełnie dziwny sposób zarządzania kluczami. W tym artykule omówiono, jak i co. burnz.wordpress.com/2007/12/14/…
Chris

1
Zazwyczaj sprawdzanie /var/log/auth.logsystemów Debian lub /var/log/secureRedHat powinno dać ci jasną radę na temat tego, co jest źle skonfigurowane (zwykle problemy z uprawnieniami)
Giovanni Toraldo

Odpowiedzi:


15

Chociaż Twój problem mógł już zostać rozwiązany przez inne odpowiedzi, zablokowałem się z wystarczającej liczby maszyn, aby nie sprawdzać poprawności zmian sshd_config przed wypisaniem się, dlatego opracowałem poniższy proces, który może być przydatny do przyszłego debugowania zmian konfiguracji sshd:

NIE WOLNO ODŁĄCZAĆ aktywnego połączenia ssh, dopóki PO teście nie zweryfikuje, że zachowanie jest zgodne z oczekiwaniami.

za. sprawdź, co Twoim zdaniem powinien robić sshd

b. sprawdź poprawność konfiguracji za pomocą „-t”

do. uruchom pełną testową wersję serwera, na którym możesz monitorować na żywo

re. rozpocznij pełne „testowe” połączenie klienta, które możesz monitorować na żywo


za. sprawdź, co Twoim zdaniem powinien robić sshd

Przejrzyj plik konfiguracyjny sshd bez całego komentarza za pomocą czegoś takiego jak poniżej (zakładając, że sshd_config jest poprawnym plikiem w / etc / ssh)

$ grep -v "^ #" / etc / ssh / sshd_config | grep -v "^ $"

To po prostu wszystko usuwa, więc weryfikujemy to, co naszym zdaniem zmieniamy (niekoniecznie to, czy jest poprawne, czy nie).

b. sprawdź poprawność konfiguracji za pomocą „-t”

Ze strony podręcznika sshd używam,

-t Tryb testowy. Sprawdź tylko poprawność pliku konfiguracyjnego i poczytaj klucze. Jest to przydatne do niezawodnej aktualizacji sshd, ponieważ opcje konfiguracji mogą ulec zmianie.

Inne zmiany mogą mieć bardziej subtelne okoliczności. Na przykład nie wyłączaj uwierzytelniania za pomocą hasła, dopóki nie upewnisz się, że uwierzytelnianie za pomocą klucza publicznego działa poprawnie.

do. uruchom pełną testową wersję serwera, na którym możesz monitorować na żywo

$ sudo / usr / sbin / sshd -ddd -p 9999

Dzięki temu twoja istniejąca sesja robocza jest aktywna, ale daje ci kolejną instancję sshd do zweryfikowania nowych zmian konfiguracji. Dysk SSHD działa teraz na pierwszym planie do portu zdefiniowanego przez użytkownika (w naszym przykładzie 9999) i przekazuje wiele głośnych informacji debugowania, które można śledzić w / var / log / authlog (lub ewentualnie /var/log/auth.log w systemie operacyjnym).

re. rozpocznij pełne „testowe” połączenie klienta, które możesz monitorować na żywo

Uruchom połączenie klienta ssh w trybie pełnym, aby wyświetlić na ekranie więcej informacji, które mogą pomóc w lepszym debugowaniu błędu.

$ ssh -vvv -p 9999 nazwa-serwera

Powinieneś teraz mieć wystarczającą ilość informacji w plikach dziennika serwera lub na ekranie połączenia klienta, aby odizolować problem.

Rozwiązanie zasadniczo sprowadza się do uprawnień do plików (jak pokazują Magnar i setatakahashi)

Powodzenia


Myślę, że powinieneś również sprawdzić plik ssh_config po stronie klienta, aby upewnić się, że działa zgodnie z oczekiwaniami. Użyj czegoś takiego jak poniżej, aby wymazać komentarze:> grep -v "^ #" / etc / ssh / ssh_config | grep -v "^ $"
samt

Cóż, konfigurację ssh klienta można naprawić w dowolnym momencie, jest to serwer, z którego zostaniesz zablokowany, jeśli źle skonfigurujesz.
Soviero

33

Serwer zignoruje Twój plik autoryzowanych_kluczy, jeśli właściwości właściciela są nieprawidłowe. Zmiana tego na to naprawia:

chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys

6
ssh -vvv -l nazwa_użytkownika server.domain powie, jeśli wysyłanie prawidłowy klucz
Dave Cheney

Czasami widziałem, jak sshd narzeka na złe uprawnienia do katalogu domowego - więc dodawałem „chmod o-rwx ~” (lub przynajmniej „chmod ow ~”) do listy, tak jak robił to setatakahashi. Zwykle staje się to oczywiste, gdy plik dziennika jest monitorowany - komunikaty o błędach, które tam widziałem, zawsze wskazywały właściwy kierunek.
Olaf

Ta odpowiedź wydaje się najbardziej prawdopodobna, ale komentarz Dave'a Cheneya jest jedynym sposobem, aby zobaczyć, co się naprawdę dzieje. Sprawdź także dzienniki serwera.
dwc

To był mój problem. Godziłem się z tym godzinami. Dzięki wielkie!
Sam Soffes,

1
To załatwiło sprawę, ale moje dotychczasowe uprawnienia były 0775i 0644odpowiednio. Dlaczego pomogło ograniczenie uprawnień? Czy jest to gdzieś skonfigurowane zabezpieczenie?
Dziekan

11

$ chmod 700 ~

$ chmod 700 ~ / .ssh

$ chmod 600 ~ / .ssh / Author_keys

Sprawdź te atrybuty w / etc / ssh / sshd_config

$ sudo grep PubkeyAuthentication / etc / ssh / sshd_config

$ sudo grep Protocol / etc / ssh / sshd_config


2
Znakomity punkt na temat ~, musisz upewnić się, że nikt inny niż ty nie może pisać do twojego katalogu domowego, w przeciwnym razie mogliby zmienić nazwę twojego katalogu ~ / .ssh
Dave Cheney

ostatni chmod powinien być: $ chmod 600 ~/.ssh/authorized_keysnie$ chmod 600 ~/.sHh/authorized_keys
SooDesuNe

3
jakie powinny być wartości atrybutów ?
Michael

0

Kolejna ważna pułapka ..

Jeśli twój katalog domowy jest zaszyfrowany, sshd nie będzie miał dostępu do ~ / .ssh / uprawnionych_ kluczy.

Zobacz odpowiedź

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.