Od pewnego czasu używam uwierzytelniania za pomocą klucza publicznego na zdalnym serwerze do zdalnego używania powłoki, a także do montowania sshfs. Po wymuszeniu umount katalogu sshfs zauważyłem, że ssh zaczął mnie pytać o hasło. Próbowałem usunąć zdalne .ssh / uprawnione_klucze z dowolnej wzmianki o maszynie lokalnej i wyczyściłem maszynę lokalną z odniesień do maszyny zdalnej. Następnie powtórzyłem swój ssh-copy-id, poprosił mnie o hasło i wrócił normalnie. Ale oto, kiedy ssh do zdalnego serwera nadal pojawia się monit o hasło. Jestem trochę zdezorientowany, co to może być problem, jakieś sugestie?
28
~
,~/.ssh
a także~/.ssh/authorized_keys
uruchamiaćssh -vvv server.example.com
i raportować dane wyjściowe (jeśli chcesz, anonimizuj nazwy hosta i użytkownika). Jeśli masz dostęp do roota na serwerze, spójrz na wpisy dziennika utworzone podczas próby zalogowania się za pomocą klucza publicznego.Odpowiedzi:
sshd dziwnie się czuje z uprawnieniami do $ HOME, $ HOME / .ssh (oba katalogi) i do $ HOME / .ssh / uprawnione_ klucze.
Jedno z moich pudeł linuksowych zakończyło się uprawnieniami drwxrwxrwx do mojego katalogu $ HOME. Arch Arch Linux absolutnie nie zalogowałby się przy użyciu kluczy publicznych, dopóki nie usunę uprawnień „w” dla grupy, innych w moim katalogu $ HOME.
Spróbuj, aby $ HOME i $ HOME / .ssh / miały bardziej restrykcyjne uprawnienia dla grupy i innych. Sprawdź, czy to nie pozwala sshd robić swoich rzeczy.
źródło
ssh-copy-id
powinien był zadbać o uprawnienia~/.ssh
i~/.ssh/authorized_keys
, ale także upewnić się, że sam katalog domowy nie nadaje się do zapisu grupowego.chmod g-w homedir
na zdalnym serwerze działało jak urok.Potrzebne są następujące uprawnienia:
.ssh
Folderu:700 (drwx------)
644 (-rw-r--r--)
600 (-rw-------)
źródło
Ostatnio doświadczyłem również tego problemu.
Zostało to poprawione poprzez zmianę uprawnień do
$HOME
katalogu. Jednak samo uruchomieniechmod g-w ~/
nie rozwiązało problemu. Oprócz tegochmod g-w ~/
musiałem również zmodyfikować uprawnieniaothers
do$HOME
katalogu, uruchamiającchmod o-wx ~/
Razem:
Zauważ, że nie jestem pewien, czy
o-x
było to konieczne, po prostu uruchomiłem to jako środek ostrożności.źródło
Zmiana uprawnień do folderu ~ / .ssh rozwiązała mój problem zgodnie z tym postem na Super User SE .
źródło
Czy problem występuje również przy logowaniu równoległym, tj. Jeśli próbujesz zamontować sshfs mając otwartą sesję ssh? Jeśli nie, to zgaduję, że masz zaszyfrowany katalog domowy? W takim przypadku
$HOME/.ssh/authorized_keys
staną się użyteczne na zdalnym komputerze dopiero po pierwszym logowaniu (przy użyciu hasła).Sprawdź https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Trou Rozwiązywanie problemów, aby uzyskać wyjaśnienie i wymagane obejście.
źródło
Zamieściłbym to jako komentarz, ale prawdopodobnie byłoby to zbyt długie. Chciałem tylko dodać, że
ssh-copy-id
próbuje wysłać klucz publiczny z/.ssh
lokalizacji w twoim$HOME
folderze.Jeśli próbujesz
ssh
jako root za pomocą klucza publicznego (zapisać komentarze związane z bezpieczeństwem),ssh-copy-id
możesz próbować zalogować się przy użyciu niewłaściwego klucza publicznego, jeśli twoja$HOME
zmienna jest ustawiona na cokolwiek innego niż/root
(na przykład na katalog domowy zwykłego użytkownika ), dlatego użytkownik root byłby monitowany, ponieważ klucz publiczny root nie jest zainstalowany w systemie zdalnym.Aby określić dokładny klucz publiczny, możesz użyć następującego jednowierszowego:
pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"
Kilka razy spotkałem się z tym scenariuszem (również dziś rano) i pomyślałem, że spróbuję włożyć moje 2 centy, na wypadek, gdyby ktoś znalazł się w takiej samej sytuacji.
źródło
Jak wspomnieli inni współautorzy, jest to prawdopodobnie problem z pozwoleniem.
Najlepszym sposobem zdiagnozowania tego jest zrestartowanie demona SSH na zdalnym serwerze z włączoną opcją debugowania - zwykle jest to opcja „-d”. Komunikat demona OpenSSH jest bardzo wyraźny. Na przykład zobaczysz wiadomości takie jak:
źródło
Powodem, dla którego klucz publiczny nie przetrwał po ponownym uruchomieniu, było zaszyfrowanie katalogu domowego mojego serwera. (robisz to podczas instalowania serwera)
źródło
Innym możliwym problemem jest to, że serwer nie obsługuje algorytmu klucza. W moim przypadku w
sshd
dziennikach (/var/log/auth.log
w moim przypadku) znalazłem następujące komunikaty :W takim przypadku musisz włączyć obsługę tego algorytmu w
sshd
konfiguracji (co może wymagać aktualizacji do nowszejsshd
wersji) lub zmienić klucz na algorytm obsługiwany przez urządzeniesshd
, z którym próbujesz się połączyć .źródło
Ponieważ te pytania pojawiają się wśród pierwszych wyników wyszukiwania w Google dla tego zachowania, dodam również moje rozwiązanie:
W moim przypadku nie było to nic związanego z uprawnieniami. Z jakiegokolwiek powodu (nie zadałem sobie trudu, aby dowiedzieć się z jakiego powodu, ponieważ znalazłem szybką poprawkę) podczas wykonywania polecenia ssh program nie szukał odpowiedniego pliku tożsamości. Jednym z rozwiązań było ręczne dodanie na zdalnym serwerze klucza SSH, którego program SSH próbował użyć. Możesz zaobserwować, co robi program SSH podczas wykonywania polecenia, dodając do polecenia -v:
Następnie wystarczy pobrać na swój komputer lokalny dowolny klucz publiczny, dla którego program SSH próbuje znaleźć plik tożsamości / klucz prywatny, na przykład na komputerze Mac:
... i dodaj go do pliku autoryzowanego_kluczy pilota w:
Innym, w moim przypadku lepszym rozwiązaniem było dodanie niestandardowego hosta do mojego lokalnego pliku konfiguracyjnego ssh. Na moim komputerze Mac jest to:
Tutaj możesz dodać na przykład coś takiego:
Następnie wystarczy wykonać:
... i Voilà
źródło