ssh nie pozwala już na uwierzytelnianie za pomocą klucza publicznego


22

Moja maszyna niedawno przestała akceptować przychodzące uwierzytelnianie za pomocą klucza publicznego. Mam pulpit Ubuntu 11.04, na który ssh z komputera z systemem Windows. Używam szpachli z korowodem. Jestem w stanie połączyć się, ale tylko z interaktywnym uwierzytelnianiem hasła, nie z moim kluczem rsa, który mam skonfigurowany.

Już sprawdziłem, czy klucz jest wymieniony w ~ / .ssh / uprawnione_ klucze. Jak to naprawić i co sprawdzić?


2
Najpierw należy sprawdzić, że wszystkie trzy ~, ~/.sshi ~/.ssh/authorized_keysto tylko przez ciebie zapisu (w szczególności zezwolenia zapisu żadna grupa). Poszukaj /var/log/auth.logwpisów w dzienniku utworzonych podczas prób logowania. Skopiuj i wklej je do swojego pytania (edytuj nazwy dla prywatności, jeśli chcesz). Sprawdź także, czy problem występuje wyłącznie po stronie serwera: skopiuj klucz prywatny na maszynę z systemem Linux (musisz przekonwertować plik klucza prywatnego PuTTY na format OpenSSH) i sprawdź, czy ssh localhostdziała.
Gilles „SO- przestań być zły”

z jakiegoś powodu mój katalog domowy był zapisywalny. To naprawiło. Postaw to jako odpowiedź, abym mógł go zaakceptować.
Andrew Redd,

Odpowiedzi:


28

Jeśli uwierzytelnianie za pomocą klucza publicznego nie działa: upewnij się, że po stronie serwera katalog domowy ( ~), ~/.sshkatalog i ~/.ssh/authorized_keysplik są zapisywalne tylko przez ich właściciela . W szczególności żadna z nich nie może być zapisywalna przez grupę (nawet jeśli użytkownik jest sam w grupie). chmod 755lub chmod 700jest w porządku, chmod 770nie jest.

Co sprawdzić, gdy coś jest nie tak:

  • Uruchom, ssh -vvvaby zobaczyć wiele wyników debugowania. Jeśli opublikujesz pytanie z pytaniem, dlaczego nie możesz połączyć się z ssh, dołącz to wyjście (możesz chcieć anonimizować nazwy hosta i użytkownika).
  • Jeśli możesz, sprawdź, czy serwer się zalogował /var/log/auth.log.
  • Jeśli uwierzytelnianie za pomocą klucza publicznego nie działa, sprawdź ponownie uprawnienia, szczególnie bit grupy (patrz wyżej).


1
Niezła odpowiedź! Zapomniałem mojego homedir: o
RobAu

Jeśli używasz najnowszej wersji ssh (lub sshd), klucze DSA nie są już domyślnie obsługiwane z powodu problemów z bezpieczeństwem. Jedyną prawdziwą poprawką jest aktualizacja do RSA lub lepszych kluczy.
Mikko Rantalainen

Zmieniłem uprawnienia do mojego folderu domowego i co? Zostałem zablokowany z SSH! Zmieniłem klucze ssh, nie, serwer nadal odmawia połączenia! Byłem szalony, próbując znaleźć rozwiązanie, a dzięki twojej odpowiedzi chmod 700 do mojego folderu domowego ssh zaczął działać !!!!!!! Dzięki! Jeśli połączenie terminalu zostało przerwane podczas próby znalezienia rozwiązania, zostałbym całkowicie zablokowany na serwerze. Uważaj więc, aby nie grać z uprawnieniami do folderu domowego! (Właśnie zmieniłem uprawnienia do folderu domowego, nie do folderu .ssh, ale nadal zablokowałem SSH)
Tarik


5

Jeśli sprawdzisz uprawnienia do katalogów i pojawi się „.” zaraz po nich, możesz mieć włączony selinux, który zepsuje wymianę kluczy i domyślnie manualna identyfikacja hasła.

Możesz wyłączyć SELinux w celu rozwiązywania problemów, postępując zgodnie z instrukcjami tutaj: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html lub po prostu edytuj plik / etc / selinux / config i zmień go z „wymuszania” na „wyłączony”.

Mam nadzieję że to pomoże.


Miałem włączoną funkcję selinux, ale wyłączenie nie wydawało się to naprawić. Jaka była dla mnie sztuczka chmod 600 ~/.ssh/authorized_keys- plik można było zapisać w grupie. (via pyrosoft.co.uk/blog/2013/01/12/… )
David Carboni,

To mi pomogło! Dziękuję Ci!
907th

Powinieneś także mieć możliwość uzyskania uwierzytelnienia SSH podczas pracy z SELinux, ustawiając odpowiednie konteksty SELinux. Przywrócenie kontekstów skonfigurowanych przez system w katalogu domowym ( restorecon ~ -R) jest dobrym punktem wyjścia.
Josh Kelley,

4

Upewnię się, że masz poprawne ustawienia w / etc / ssh / sshd_config.

Aby wymusić użycie tylko PKI i nie zezwalać na hasła, znajdź wiersz

#PasswordAuthentication yes 

w pliku usuń komentarz i ustaw go na

PasswordAuthenticate no

Przeczytałbym również bilans ustawień, aby upewnić się, że mają one sens. W szczególności postaraj się upewnić, że używasz kluczy RSA, ponieważ wiadomo, że DSA jest zagrożone.


11
Wyjaśniasz, jak wyłączyć uwierzytelnianie hasła. Nie pomoże to w działaniu uwierzytelniania za pomocą klucza publicznego (klucz publiczny jest najpierw wypróbowywany). Andrew: nie wyłączaj uwierzytelniania hasła, dopóki nie upewnisz się, że uwierzytelnianie za pomocą klucza publicznego działa!
Gilles „SO- przestań być zły”

2

Jedną z możliwych przyczyn tego problemu jest to, że masz klucze DSA, ale teraz SSH (najwyraźniej) domyślnie wymaga kluczy RSA. Mam problem podczas aktualizacji do 16.04. Możesz zobaczyć więcej tutaj, ale krótka odpowiedź jest następująca ~/.ssh/config:

PubkeyAcceptedKeyTypes ssh-dss

1

Rozwiązałem ten problem, usuwając komentarz „PasswordAuthentication yes” w / etc / ssh / sshd_config.


1

Z powodu potrzeby rozwiązywania problemów z komunikacją między dwoma różnymi komputerami, miałem dwa klucze prywatne ~/.sshpo stronie klienta.

Zamiast konfigurować każdy host serwera z odpowiednim kluczem prywatnym, ~/.ssh/identitytak jak powinienem to zrobić, miałem skonfigurowany dla wszystkich hostów klucz pomocniczy (aw tym przypadku nieprawidłowy):

Host *
IdentityFile ~/.ssh/identity_b

Korekta ~/.ssh/identityrozwiązała problem:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b

0

Po prostu miałem ten sam problem, ale zmiana uprawnień chmodnie pomogła, ponieważ okazało się, że nie mam prawa własności do ~/.ssh/authorized_keyspliku. Możesz zmienić własność .sshkatalogu za pomocą:

sudo chown -R "$USER" ~/.ssh

-1

Jakoś to działało dla mnie:

root @ kaiser: ~ # vim / etc / ssh / sshd_config

Zmień tę linię z tak na nie 28 StrictModes nie

Spróbuj ponownie

sysadmin @ suselinux1: ~> con sysadmin kaiser Witamy w Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-25-generic i686)

Ostatnie logowanie: pt. 9 lis 15:40:11 2012 od 10.1.3.25 sysadmin @ kaiser: ~ $ data vie lis 9 17:53:11 CST 2012 sysadmin @ kaiser: ~ $


3
Robienie czegoś bez wiedzy o tym, co robi i dlaczego działa, może być akceptowalne, ale sugerowanie tego samego jest złe, a mówiąc uczciwie, gorsze, jeśli dotyczy systemu bezpieczeństwa.
Mahesh,

2
Zgoda. niech to będzie zachęta do tworzenia lepszych sshddokumentów, które nie należą do kategorii „miłej lektury w sobotę”
code_monk
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.