Połączenie SSH prosi o hasło, chociaż klucz jest akceptowany

12

Pojawia się monit o hasło, mimo że wygląda na to, że mój klucz SSH został zaakceptowany. O ile mi wiadomo, wiersz „Serwer akceptuje klucz: pkalg ssh-rsa blen 277” w dziennikach poniżej oznacza, że ​​mój klucz został zaakceptowany.

Oto dzienniki debugowania:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/sam/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: fp <<HASH REDACTED>>
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/sam/.ssh/id_dsa
debug1: Trying private key: /home/sam/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 1

Pomóżcie bardzo docenione, każdy, kto znalazłem, który ma problemy z SSH, zawodzi we wcześniejszym punkcie, który widzę.

SamStephens
źródło

Odpowiedzi:

11

Twój klucz prywatny z pewnością nie został zaakceptowany, tylko próbowano. Uwierzytelnianie oparte na kluczu SSH może się nie udać na wiele sposobów, a rejestrowanie nie jest tak świetne, więc debugowanie tego konkretnego problemu jest jednym z moich osobistych problemów. Odkryłem, że błąd jest zwykle wynikiem jednej z następujących sytuacji.

  • Twój ~/.ssh/authorized_keysplik jest zbyt otwarty. Dla własnej ochrony sshdpróbuje chronić cię przed sobą. Jeśli uprawnienia do pliku autoryzowanych kluczy, uwierzytelnienie nie powiedzie się. Uruchom chmod -R go-rwx ~/.ssh.
  • Twój klucz publiczny ~/.ssh/authorized_keysjest nieprawidłowo sformułowany. Może to wynikać z wielu problemów, ale najczęstszym jest problem z wklejaniem kopii. Niektóre terminale podczas kopiowania / wklejania na ekranach będą interpretować zawijanie linii jako nową linię. Każdy wpis w authorized_keyspliku musi być pojedynczą linią. Możesz to sprawdzić, zmieniając rozmiar emulatora terminala i sprawdzając, czy nie ma przerwy, porównując wynik z wc -l ~/.ssh/authorized_keysliczbą kluczy, które powinny tam być, lub cokolwiek, co działa najlepiej. Upewnij się tylko, że każdy klawisz ma jedną linię i wszystko powinno być w porządku.
Scott Pack
źródło
7

Wklejone wyjście ssh -v sugerowało, że próbował użyć klawisza, ale to nie działało, więc przeszedł na klawiaturę interaktywną.

Czy sprawdziłeś dziennik uwierzytelnienia na serwerze, z którym się łączysz? (np. /var/log/auth.log). Jeśli twoja konfiguracja na zdalnym końcu jest niepoprawna, np. Złe uprawnienia, to ssh -v (lub -vv lub -vvv) nie powie ci o tym, ale zostanie zarejestrowane przez sshd.

Daniel Lawson
źródło
/var/log/auth.log miał dla mnie odpowiedź: „Odmowa uwierzytelnienia: zła własność lub tryby katalogu / root”
kevlar1818,
5

W moim przypadku plik /var/log/authlogpokazał:

[ID 800047 auth.info] Authentication refused: bad ownership or modes for directory 

Sprawdziłem poprawne prawo własności / uprawnienia, .sshale $HOMEmiałem 777 uprawnień. Ustawianie uprawnień 755 dla $HOMEdozwolonego protokołu sftp do pracy. Dzięki jeszcze raz.

Robin AA
źródło
2

Jeśli masz dostęp do serwera (bezpośrednio lub poprzez inny login), sprawdź, czy serwer loguje się (powiedzmy) /var/log/sshdlub w /var/log/securezależności od systemu

Jest to zwykle spowodowane błędem uprawnień do ~/.ssh/authorized_keyspliku. Upewnij się, że nie jest on czytelny na całym świecie, ale co najważniejsze, że jest czytelny dla użytkownika (czasami użytkownika usługi) korzystającego z sshd

Popiół
źródło
1
Który system używa /var/log/sshd? Systemy wiem używania albo /var/log/auth.logalbo /var/log/secure.
kasperd,
1

Uprawnienia ~/.ssh/authorized_keysw trybie zdalnym są ważne ( 600dla moich systemów RHEL i Solaris)

Uprawnienia twojego katalogu domowego na zdalnym komputerze są ważne ( 700w moich systemach)

Na końcu uruchomienie sshdna zdalnym komputerze w trybie debugowania na innym porcie może być pomocne:

sudo /usr/sbin/sshd -p 5555 -dd

5555to przykładowy port, który możesz zmienić. Więcej informacji na ten temat można znaleźć na stronie: http://ubuntuforums.org/archive/index.php/t-2219973.html

sepehr hakimi
źródło
0

Odkryłem, że jeśli korzystam z sshdusługi , występuje problem . Aby uniknąć tego problemu, zatrzymaj sshdusługę za pomocą, service sshd stopa następnie uruchom sshddemona z wiersza polecenia za pomocą sudo /usr/sbin/sshd.

Jogan i Bijapur
źródło
0

Próbować

/sbin/restorecon -r /root/.ssh

Możliwy problem z ustawieniem uprawnień.

abkrim
źródło