Nie można uzyskać uwierzytelnienia klucza publicznego SSH do działania [zamknięte]

41

Mój serwer działa w CentOS 5.3. Jestem na komputerze Mac z systemem Leopard. Nie wiem, kto jest za to odpowiedzialny:

Mogę zalogować się do mojego serwera po prostu za pomocą uwierzytelniania hasłem. Przeszedłem wszystkie etapy konfiguracji PKA (jak opisano na stronie http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ssh-beyondshell.html ), ale kiedy Używam SSH, odmawia nawet próby weryfikacji klucza publicznego. Za pomocą polecenia

ssh -vvv user@host

(gdzie -vvv zwiększa gadatliwość do maksymalnego poziomu) Otrzymuję następujące istotne dane wyjściowe:

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

a następnie monit o podanie hasła. Jeśli spróbuję wymusić problem

ssh -vvv -o PreferredAuthentications=publickey user@host

dostaję

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: No more authentication methods to try.

Tak więc, mimo że serwer twierdzi, że akceptuje metodę uwierzytelniania publickey, a mój klient SSH nalega na to, zostaje mi odrzucone. (Zwróć uwagę na wyraźny brak wiersza „Oferowanie klucza publicznego:” powyżej). Jakieś sugestie?


źródło
po prostu użyj „ssh -v”, nie potrzebujesz więcej gadatliwości i
dołącz
To pytanie jest zamykane, ponieważ nie można już na nie odpowiedzieć i przyciąga odpowiedzi niskiej jakości.
HopelessN00b

Odpowiedzi:

44

Sprawdź, czy twoja maszyna Centos ma:

RSAAuthentication yes
PubkeyAuthentication yes

w sshd_config

i upewnij się, że masz odpowiednie uprawnienia do katalogu ~ / .ssh / maszyny centos.

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

powinien załatwić sprawę.

pyhimys
źródło
1
bardzo ważne są prawidłowe prawa i nazwy plików (czasami autoryzowane klucze 2, czasem bez 2)!
brandstaetter
4
Zezwolenie na plik autoryzowane klucze to bardzo ważna wskazówka. Dzięki.
Kane
7
Możesz także potrzebować, chmod go-w ~/jeśli tak nie jest.
tylerl
1
Należy również sprawdzić, czy Twój dom reż na zdalnym serwerze ma uprawnienia 755(jak Jinyu Liu wspomina poniżej)
Attila Fülöp
1
W innych systemach operacyjnych plik konfiguracyjny SSH może również znajdować się pod:/etc/ssh/ssh_config
Yoshua Wuyts,
17

Miałem podobny problem - zdalny komputer nie mógł użyć uwierzytelnienia klucza publicznego do zalogowania się na serwerze CentOs 6. Problem w moim przypadku był związany z SELinuksem - katalog domowy użytkownika próbującego się zalogować miał konteksty bezpieczeństwa wiadomości. Rozwiązałem to za pomocą restoreconnarzędzia:

restorecon -Rv /home
Gareth
źródło
2
Dzięki, Gareth! Polecenie „restorecon -Rv /root/.ssh” załatwiło sprawę.
tbroberg,
Aby wyjaśnić dalej: to polecenie każe SELinux zresetować tagi SELinux dla plików poniżej /hometego, co zwykle znajdują się w układzie katalogów /home.
rakslice
Jeśli logujesz się jako root, powinno to byćrestorecon -Rv /root
youfu
13

1 - sprawdź / etc / ssh / sshd_config, upewnij się, że masz

RSA Uwierzytelnienie tak
Pubkey Uwierzytelnienie tak

2- sprawdź bezpieczny dziennik ze zdalnego komputera, przejrzyj szczegółowy dziennik błędów demona sshd. np. w moim Ubuntu

# grep 'sshd' / var / log / secure | grep „Odmowa uwierzytelnienia” | ogon -5
4 sierpnia 06:20:22 xxx sshd [16860]: Odmowa uwierzytelnienia: zła własność lub tryby dla katalogu / home / xxx
4 sierpnia 06:20:22 xxx sshd [16860]: Odmowa uwierzytelnienia: zła własność lub tryby dla katalogu / home / xxx
4 sierpnia 06:21:21 xxx sshd [17028]: Odmowa uwierzytelnienia: złe własności lub tryby dla katalogu / home / xxx
4 sierpnia 06:21:21 xxx sshd [17028]: Odmowa uwierzytelnienia: złe własności lub tryby dla katalogu / home / xxx
4 sierpnia 06:27:39 xxx sshd [20362]: Odmowa uwierzytelnienia: zła własność lub tryby dla katalogu / home / xxx

Następnie sprawdź własność i tryby dla katalogu / home / xxx, być może trzeba to uruchomić

chmod 755 / home / xxx
Jinyu Liu
źródło
1
Sprawdź plik dziennika systemu to bardzo ważna wskazówka.
Kane
1
Perms w katalogu domowym 755 pomógł mi - zdecydowanie wymagany!
Ben
11

Dokładnie sprawdź, czy twoje uprawnienia są poprawne, a struktura plików (w szczególności pisownia) jest poprawna, zarówno dla komputerów lokalnych, jak i zdalnych. Adres URL, do którego się odwołujesz, zawiera je wszystkie, ale warto sprawdzić, czy masz pasujące dane. Zwykle uprawnienia generują odpowiedni błąd.

Czy sprawdziłeś, czy pole sshd_config na twoim CentOS 5.3 jest ustawione tak, aby zezwalało na PubkeyAuthentication lub RSAAuthentication?

Sprawdź logi serwera SSH w systemie CentOS - może dostarczyć więcej informacji. Nie jestem pewien, czy CentOS sprawdza wpisany na czarnej liście klucz ssh, co robi Debian, ale widziałem odrzucenia ssh publickey, które są względnie ciche jak na wyjście -vvv, ale logi dość jasno wyjaśniają, co się dzieje

Daniel Lawson
źródło
7

Rozumiem! Okazuje się, że był to problem po stronie klienta. (Myślę, że każdy problem po stronie serwera dałby bardziej przydatne wyjście debugowania.) Z nieznanych mi powodów, na moim komputerze Mac plik / etc / ssh_config miał linię

PubkeyAuthentication = no

Skomentowałem tę jedną linię, a teraz wszystko działa dobrze.


źródło
4

Oprócz trybów plików / katalogów upewnij się, że własność jest prawidłowa! Użytkownik musi posiadać własny katalog domowy, .ssh / i zawarte w nim pliki.

Musiałem biec, chown -R $user:$user /home/$userżeby ominąć moje awarie ssh.

Visser
źródło
+1, w jednym z moich systemów uprawnienia do .ssh były prawidłowe, ale ktoś zrobił katalog domowy konta 777.
GargantuChet
2

Sprawdź także, czy może on automatycznie podać klucz, czy nie, użyj -i ścieżka / do / key, jeśli nie, lub po prostu przetestuj

Jimsmithkka
źródło
2

Brzmi dla mnie jak problem z konfiguracją. Jak sugerował Daniel, należy sprawdzić dwie rzeczy:

  1. Klucze SSH w $HOME/.ssh/authorized_keyssą czytelne; i
  2. SSHd jest skonfigurowany tak, aby umożliwić logowanie za pomocą klucza publicznego.
sybreon
źródło
2

Sprawdź nazwę użytkownika, za pomocą którego próbujesz się zalogować. Domyślnie jest to nazwa użytkownika na komputerze lokalnym.

Creotiv
źródło
1

Dane wyjściowe klienta, jak w ssh -v, ujawnią, że na pewnym etapie protokołu występuje problem, ale gdy jest to spowodowane czymś na serwerze, klient nie zostanie poinformowany o przyczynie. Sprawdź pliki dziennika serwera, aby dowiedzieć się, co jest nie tak. Prawdopodobnie musisz być root, aby mieć do tego uprawnienia. Na przykład dla sshdskonfigurowanego logowania do syslog możesz znaleźć wiadomości w /var/log/secure. Podobnie jak te:

Authentication refused: bad ownership or modes for directory /home/you/.ssh
Authentication refused: bad ownership or modes for file /home/you/.ssh/authorized_keys

Powodem w tym wypadku było (głupi) domyślna defaultod 0002. Oznacza to, że grupa ma dostęp do zapisu. (Groupname = nazwa użytkownika, ale nadal.) Demon SSH nie ufa plikom, które mogą być modyfikowane przez innych niż użytkownik (no i rootoczywiście). Możesz rozwiązać problem za pomocą chmod.

chmod 700 ~/.ssh # solve the issue
chmod 720 ~/.ssh # reproduce the issue
# or similar for a file
Lumi
źródło
1

Właśnie wpadłem w ten sam problem z dostępem do Fedory Core 16 do centów 5.5

dzienniki i pełne informacje wyglądały dokładnie tak samo

problemem był klucz publiczny, dostał on trochę fałszywych danych, zregenerował go i opublikował na serwerze sshd_server, ty sshd_client wysyła informacje o kluczu, ale nie jest rozpoznawany przez serwer (nie pasuje do żadnego z kluczy w uprawnionych kluczach)

Freaktor
źródło
-2

Kolejny ugryziony przez to. Po długim wyszukiwaniu okazało się, że jawnie karmiłem ssh kluczem publicznym (z opcją -i) zamiast klucza prywatnego. Doh!

Ellert van Koperen
źródło