Zalogowanie na serwerze ssh: Odmowa dostępu, spróbuj ponownie

9

Próbuję zalogować się na mój serwer ssh przy użyciu nazwy użytkownika i hasła, ale pojawia się ten błąd po wpisaniu poprawnego hasła:

Permission denied, please try again.

Mogę jednak zalogować się za pomocą klucza publicznego na innym komputerze, ale NIE wyłączyłem zwykłego uwierzytelniania hasłem. Jedyne, co wyłączyłem, to logowanie do roota.

Oto mój plik sshd_config:

# Plik konfiguracyjny wygenerowany przez pakiet
# Szczegółowe informacje można znaleźć na stronie podręcznika sshd_config (5)

# Jakie porty, adresy IP i protokoły nasłuchują
Port 22
# Użyj tych opcji, aby ograniczyć, z którymi interfejsami / protokołami sshd się połączy
#ListenAddress ::
#ListenAddress 0.0.0.0
Protokół 2
# HostKeys dla wersji protokołu 2
HostKey / etc / ssh / ssh_host_rsa_key
HostKey / etc / ssh / ssh_host_dsa_key
HostKey / etc / ssh / ssh_host_ecdsa_key
# Bezpieczeństwo Oddzielenie jest włączone dla bezpieczeństwa
UsePrivilegeSeparation tak

# Czas życia i rozmiar efemerycznego klucza wersji 1 serwera
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logowanie
SyslogFacility AUTH
LogLevel INFO

# Uwierzytelnianie:
LoginGraceTime 120
PermitRootLogin no
StrictModes tak

RSA Uwierzytelnienie tak
Pubkey Uwierzytelnienie tak
#AuthorizedKeysFile% h / .ssh / Author_keys

# Nie czytaj plików ~ / .rhosts i ~ / .shost użytkownika
IgnoreRhosts tak
# Aby to zadziałało, potrzebujesz także kluczy hosta w / etc / ssh_known_hosts

RhostsRSA Nr uwierzytelnienia
# podobne dla wersji protokołu 2
Uwierzytelnienie na podstawie hosta
# Odkomentowanie, jeśli nie ufasz ~ / .ssh / known_hosts dla RhostsRSAAuthentication
#IgnoreUserKnownHosts tak

# Aby włączyć puste hasła, zmień na tak (NIE ZALECANE)
PermitEmptyPasswords no

# Zmień na tak, aby włączyć hasła wyzwanie-odpowiedź (strzeż się problemów z
# niektóre moduły i wątki PAM)
Wyzwanie Odpowiedź Nr uwierzytelnienia

# Zmień na no, aby wyłączyć tunelowane hasła w postaci czystego tekstu
Uwierzytelnianie hasła tak

# Opcje Kerberos 
# Kerberos Numer uwierzytelnienia
#KerberosGetAFSToken nr
#KerberosOrLocalPasswd tak
#KerberosTicketCleanup tak

# Opcje GSSAPI
#GSSAPIANumer uwierzytelnienia
#GSSAPICleanupCredentials yes

X11 Przekazywanie tak
X11DisplayOffset 10
PrintMotd no
PrintLastLog tak
TCPKeepAlive tak
#UseLogin no

#MaxStartups 10:30:60 
#Banner /etc/issue.net

# Zezwól klientowi na przekazywanie regionalnych zmiennych środowiskowych
AcceptEnv LANG LC_ *

Podsystem sftp / usr / lib / openssh / sftp-server

# Ustaw na „tak”, aby włączyć uwierzytelnianie PAM, przetwarzanie konta,
# i przetwarzanie sesji. Jeśli ta opcja jest włączona, uwierzytelnianie PAM będzie działać
# być dozwolone przez ChallengeResponseAuthentication i
# Hasło uwierzytelnienia. W zależności od konfiguracji PAM,
# Uwierzytelnianie PAM przez ChallengeResponseAuthentication może zostać pominięte
# ustawienie „PermitRootLogin bez hasła”.
# Jeśli chcesz tylko, aby konto PAM i kontrole sesji działały bez
# Uwierzytelnianie PAM, następnie włącz to, ale ustaw Uwierzytelnianie hasłem
# i ChallengeResponse Uwierzytelnienie na „nie”.
UsePAM tak 
IgnoreUserKnownHosts no
Uwierzytelnianie hasła tak

Dodałem ostatnie 2 linie w ostatniej próbie uruchomienia go. (Mam je na moich innych vps i oni tam pracują)

Oto lista katalogu ~ / .ssh / mojego użytkownika:

ls -la /home/skerit/.ssh
razem 16
drwx ------ 2 skerit skerit 4096 2011-06-25 15:11.
drwxr-xr-x 4 skerit skerit 4096 07.07.2011 21:05 ..
-rw-r - r-- 1 skerit skerit 1882 2011-06-25 15:15 upoważnione klucze
-rw-r - r-- 1 skerit skerit 884 2011-06-23 22:59 znane_hosty 

To jest wynik działania / usr / sbin / sshd -d:

debug1: żądanie userauth dla użytkownika usługi skerit usługi ssh-connection none
debug1: próba 0 niepowodzenia 0
debug1: PAM: inicjowanie „skerit”
debug1: PAM: ustawienie PAM_RHOST na „82.197.70.70”
debug1: PAM: ustawienie PAM_TTY na „ssh”
debug1: żądanie userauth dla użytkownika skerit service ssh-connection method publickey
debug1: próba 1 niepowodzenia 0
debug1: sprawdź, czy pkalg / pkblob są dopuszczalne
debug1: Sprawdzanie pliku czarnej listy /usr/share/ssh/blacklist.RSA-2048
debug1: Sprawdzanie pliku czarnej listy /etc/ssh/blacklist.RSA-2048
debug1: identyfikator tymczasowo_użytkownika: 1000/1000 (e = 0/0)
debug1: próba pliku klucza publicznego /home/skerit/.ssh/authorized_keys
debug1: fd 4 kasowanie O_NONBLOCK
debug1: restore_uid: 0/0
debug1: identyfikator tymczasowo_użytkownika: 1000/1000 (e = 0/0)
debug1: próba pliku klucza publicznego /home/skerit/.ssh/authorized_keys2
debug1: Nie można otworzyć autoryzowanych kluczy „/home/skerit/.ssh/authorized_keys2”: Brak takiego pliku lub katalogu
debug1: restore_uid: 0/0
Błąd publickey dla skerit z portu 82.197.70.70 57154 ssh2
debug1: żądanie userauth dla hasła użytkownika połączenia usługi ssh-połączenia
debug1: próba 2 niepowodzenia 1
debug1: PAM: uwierzytelnianie hasłem nie powiodło się dla skerit: błąd uwierzytelnienia
Nieudane hasło do skerit z portu 82.197.70.70 57154 ssh2 

Próbowałem następnie zalogować się do serwera ssh z serwera ssh (lokalnie), używając tej samej nazwy użytkownika i hasła, i zadziałało. To było w pliku auth.log:

8 lipca 12:21:50 vpsnl1 sshd [27298]: debug1: nie można otworzyć pliku klucza „/ etc / ssh / ssh_host_ecdsa_key”: Brak takiego pliku lub katalogu
8 lipca 12:21:50 vpsnl1 sshd [27298]: błąd: Nie można załadować klucza hosta: / etc / ssh / ssh_host_ecdsa_key
8 lipca 12:22:16 vpsnl1 sshd [27298]: pam_unix (sshd: auth): błąd uwierzytelnienia; logname = uid = 0 euid = 0 tty = ssh ruser = rhost = 82.197.70.70 użytkownik =
skerit
8 lipca 12:23:50 vpsnl1 sshd [27439]: Serwer nasłuchuje na porcie 22.0.0.0.
8 lipca 12:23:50 vpsnl1 sshd [27439]: Serwer nasłuchuje na :: porcie 22.
8 lipca 12:24:07 vpsnl1 sshd [27458]: błąd: Nie można załadować klucza hosta: / etc / ssh / ssh_host_ecdsa_key
8 lipca 12:24:14 vpsnl1 sshd [27458]: Akceptowane hasło do skerit z portu 127.0.0.1 57667 ssh2
8 lipca 12:24:14 vpsnl1 sshd [27458]: pam_unix (sshd: session): sesja otwarta dla użytkownika skerit przez (uid = 0)
8 lipca 12:24:25 vpsnl1 sshd [27471]: Otrzymano rozłączenie z 127.0.0.1: 11: rozłączone przez użytkownika
8 lipca 12:24:25 vpsnl1 sshd [27458]: pam_unix (sshd: session): sesja zamknięta dla użytkownika skerit 
skerit
źródło
Czy możesz dodać swoją konfigurację ssh?
Bart De Vos,
W porządku, dodano plik konfiguracyjny!
skerit
Co powiesz na uprawnienia do .ssh? Czy możesz napisać ls -la ~ / .ssh na serwerze?
mkudlacek
Ok, dodałem listę plików użytkownika, którego próbuję się zalogować.
skerit
1
Wydaje mi się, że klucze autoryzowane nie są czytelne na całym świecie, ale to nie wyjaśnia, dlaczego nie możesz się zalogować za pomocą hasła. Czy możesz to zrobić su skeritna swoim koncie?
mkudlacek

Odpowiedzi:

9

Czy jesteś pewien, że konto użytkownika, do którego próbujesz uzyskać dostęp, jest poprawnie skonfigurowane? Jeśli zalogujesz się jako root w systemie, czy możesz suprzejść do konta użytkownika?

# su - username

Co widzisz w dziennikach po nieudanej próbie połączenia? W wielu systemach sshd zaloguje się do czegoś /var/log/securelub /var/log/auth.log. Ponadto zauważam, że masz PasswordAuthenticationwłączoną, ale ChallengeResponseAuthenticationwyłączoną. Czy widzisz to samo zachowanie, jeśli włączysz ChallengeResponseAuthentication?

Oto kilka ogólnych kroków diagnostycznych, które należy zastosować w przypadku problemów z ssh:

  • Włącz pełną diagnostykę w ssh:

    ssh -v host.example.com
    

    Spowoduje to, że klient będzie wyświetlał różne komunikaty diagnostyczne podczas negocjacji połączenia. Często daje to wskazówkę dotyczącą problemu.

  • Uruchom serwer w trybie debugowania.

    Na serwerze zatrzymaj sshd, a następnie uruchom go z wiersza poleceń w następujący sposób:

    /usr/sbin/sshd -d
    

    Spowoduje to pełne logowanie do debugowania stderr, które bardzo często będzie zawierać przydatne informacje.

Jeśli żadna z tych rzeczy nie pomoże ci zrozumieć, co się dzieje, czy dodałbyś wynik do swojego pytania?

Larsks
źródło
Ok, dodałem wynik. Zasadniczo: kiedy TRO zdalne logowanie to mówi, że hasło nie jest dobre, gdy próbuję lokalnego logowanie mówi hasło jest ok i pozwala mi.
skerit
2
To WAS hasło. Zmieniłem hasło za pomocą konsoli internetowej (niektóre aplikacje Java) i mimo że wprowadzone hasło było IDENTYCZNE w stosunku do tego, co wpisałem w mojej konsoli szpachlowej, wartości ascii musiały się różnić. Zmieniłem to na coś prostszego, zalogowałem się poprawnie przez kit i ponownie to zmieniłem. Teraz działa.
skerit
@skerit - prawdopodobnie miał wtedy problem z kodowaniem znaków - może UTF8 vs. ASCII?
warren
Cieszę się, że wszystko działa!
larsks
Miałem ten sam problem, co @skerit po zmianie hasła w konsoli internetowej DigitalOcean.
Daniel