Usiłuję skonfigurować logowanie SSH bez hasła na CentOS 5.4:
- Wygenerowałem klucz publiczny RSA na kliencie.
- ssh-copy-id od klienta do serwera.
- Zweryfikowane ~ / .ssh / Author_keys zawiera klucz klienta.
Klient nadal monitował o hasło. Co mnie ominęło?
Dzięki.
EDYCJA: sprawdzono ssh_config i uprawnienia zgodnie z zaleceniami. To są informacje debugowania od klienta:
debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure. Minor code may provide more information
Unknown code krb5 195
debug1: Unspecified GSS failure. Minor code may provide more information
Unknown code krb5 195
debug1: Unspecified GSS failure. Minor code may provide more information
Unknown code krb5 195
debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password:
Odpowiedzi:
9/10 razy dzieje się tak, ponieważ ~ / .ssh / Author_Key nie działa we właściwym trybie.
źródło
~/.ssh
katalogi nie mogą być zapisywane przez nikogo innego niż użytkownik.Sprawdź w / etc / ssh / sshd_config, aby umożliwić uwierzytelnianie za pomocą klucza. Powinieneś mieć coś takiego i upewnij się, że wiersze nie są komentowane:
PS: nie zapomnij zrestartować sshd po zmodyfikowaniu pliku (/etc/init.d/sshd restart)
źródło
AuthorizedKeysFile
został skomentowany i musiałem również użyć bezwzględnej ścieżki doauthorized_keys
.Odkryłem, że w moim systemie problemem był katalog użytkownika (/ home / nazwa użytkownika) wyposażony w niewłaściwe ustawienia uprawnień. Tak było
drwxr-x-w-
i trzeba byłodrwxr-xr-x
(tylko z uprawnieniami do zapisu dla właściciela). Rozwiązaniem było użycie chmod:źródło
Nie jestem tutaj ekspertem, ale też natknąłem się na taki problem, oto moje dwa centy oprócz wszystkich innych sugestii.
Czasami
ssh-copy-id
kopiuje niewłaściwy klucz na zdalny serwer (może się zdarzyć, jeśli masz kilka kluczy i / lub używasz niestandardowych nazw plików kluczy) lub agent uwierzytelniania jest źle skonfigurowany.Oto cytat ze stron podręcznika :
Więc w zasadzie chcesz to sprawdzić:
ssh-add -L
dane wyjściowe)ssh-copy-id
Skopiowane z tego samego klucza do zdalnego komputera (wystarczy zalogować się do zdalnego serwera za pomocą hasła i sprawdzić zawartość~/.ssh/authorized_keys
)ssh-copy-id
który klucz skopiować:ssh-copy-id -i ~/.ssh/some_public_key
Mam nadzieję, że to pomaga.
źródło
ssh-copy-id
problemu jest:DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)
, który będzie domyślnie do alfabetycznej pierwszego klucza - w moim przypadku mieliśmyid_boot2docker.pub
(co jest podobno domyślna nazwa boot2docker ssh rzeczy). Wygląda na to, że istnieje wiele różnych implementacji ssh-copy-id; moje pochodzi zbrew install ssh-copy-id
, które z kolei pochodzi z openssh-portable. Moja strona podręcznika wyraźnie wspomina o tym zachowaniu ...Najczęstszym problemem są nieprawidłowe uprawnienia po stronie serwera. Sprawdź, czy żaden z katalogu domowym,
~/.ssh
a~/.ssh/authorized_keys
to zapisywalny przez nikogo, ale (w szczególności nie mogą być grupa zapisu).Jeśli to nie jest problem, uruchom
ssh -vvv server
i spójrz na widok rozmowy klienta. W szczególności sprawdź, czy klient próbuje klucza z serwerem.źródło
~/.ssh
i~/.ssh/authorized_keys
nie może być zapisywany przez nikogo oprócz ciebie.Oprócz wszystkich powyższych, zawsze można sprawdzić plik dziennika sshd:
źródło
Próbowałem innych poprawek, ale okazało się, że musiałem zmienić katalog domowy, aby inni nie mogli zapisywać. Katalog domowy to 777. Zmieniłem go na 755 i działało.
źródło
w moim przypadku / etc / ssh / sshd_config zawierał następujący parametr:
Ale ssh-copy-id utworzył plik o nazwie nazwa_autoryzowanych kluczy, więc musiałem zmodyfikować wpis do nowej nazwy. Więcej informacji na temat wycofanych kluczy autoryzowanych2
źródło
Jako uzupełnienie odpowiedzi Omera Dagana na nowszy CentOS 7 użyj:
do przeglądania dzienników sshd na serwerze.
źródło
Problem polegał na tym, że wyłączono uwierzytelnianie RSA w / etc / ssh / ssh_config
źródło