Serwer OpenSSH odmawia przyjęcia uwierzytelnienia klucza

13

Próbowałem użyć uwierzytelniania za pomocą klucza publicznego na nowym serwerze i napotkałem ten problem.

$ ssh -v -i .ssh/server 192.168.1.100
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data .ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.100 [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file .ssh/server type -1
debug1: identity file .ssh/server-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.1.100' is known and matches the RSA host key.
debug1: Found key in .ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: .ssh/server
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password

a następnie muszę wprowadzić hasło, aby się zalogować.

Ale jeśli mam już jedną sesję podłączoną do tego serwera (który jest połączony hasłem), to następujące połączenie używa uwierzytelniania klucza, aby uniknąć wprowadzania hasła.

Jeśli nie ma już ustanowionego połączenia SSH, nie mogę połączyć się bez hasła wejściowego.

To jest dla mnie naprawdę dziwne, sprawdziłem MD5 /usr/sbin/sshdmiędzy nowym serwerem a innym normalnym serwerem, jest taki sam. Potem właśnie skopiowałem /etc/ssh/sshd_configinny z normalnego serwera na nowy serwer i uruchomiłem service ssh restart. Problem nadal istnieje.

Jak mam to naprawić?

lxyu
źródło

Odpowiedzi:

10

Sprawdź, czy .sshfolder i pliki znajdujące się w nim na komputerze klienckim są odczytywalne tylko przez właściciela ( chmod -R 600 .ssh) i czy właściciel jest poprawny dla folderu i plików (w chownrazie potrzeby użyj polecenia).

Sprawdź także authorized_keysfolder i plik na serwerze (prawdopodobnie w /root/.sshfolderze domowym użytkownika próbującego się zalogować), aby upewnić się, że ich uprawnienia i właściciel są ustawione w ten sam sposób.


Edycja: w oparciu o więcej opinii (i pewne domysły!) - czy możesz sprawdzić /etc/ssh/sshd_configi sprawdzić, czy następujący parametr jest ustawiony jak poniżej. Jeśli nie, spróbuj go edytować.

AuthorizedKeysFile /home/%u/.ssh/authorized_keys

Uwaga: zakłada się, że nie logujesz się zdalnie jako root

Linker3000
źródło
mój .ssh to 700, a pliki w .ssh to 600, i dwukrotnie sprawdziłem ~ / .ssh / uprawnione_ klucze na zdalnej maszynie. Skonfiguruj autoryzację klucza publicznego to pierwsza rzecz, którą robię po zainstalowaniu systemu, więc prawdopodobnie nie zostanie pomylona przez inną operację. btw, problem nadal ..
lxyu
OK - na tej podstawie dodaję coś do mojej odpowiedzi.
Linker3000,
jest wiersz „#AuthorizedKeysFile% h / .ssh / author_keys”. Próbowałem to skomentować, ale bezużyteczne. Btw, ten sam „/ usr / sbin / sshd” z tym samym „sshd_config”, jak zachowują się inaczej?
lxyu
W końcu ponownie zainstalowałem ubuntu, a następnie skonfigurowałem serwer openssh w ciągu jednej minuty i teraz działa dobrze ... Nadal nie wiem, co jest nie tak. :(
lxyu
Czasami naprawdę trudno jest ustalić, na czym polega problem. Kiedyś źle odczytałem klucze autoryzowane jako klucze autoryzowane. Potrzebowałem około godziny, aby rozwiązać ten problem. Widziałeś błąd w pisowni? To jest naprawdę trudne! :-)
dokładnie
4

Naprawiłem własny przypadek tego błędu usuwając id_rsa.pubz .ssh.

Skopiowałem id_rsaz innej maszyny i rozdzieliłem ją między kilku fałszywych klientów. W związku z tym, id_rsai id_rsa.pubsą rzeczywiście różne klucze, co uniemożliwia wykorzystanie id_rsacałkowicie.

Brak komunikatu o błędzie, który wyraźnie to wskazuje. Zrozumiałem to zasadniczo przez przypadek, próbując doprowadzić różne maszyny do identycznego stanu.

ketarax
źródło
3

Z mojego odkrycia wynika, że ​​najmniejsze pozwolenie dyrektora macierzystego celu jest 750. Jeśli świat nie jest 0, nie będzie działać.

Na przykład. dla katalogu głównego:

drwxr-x--- 3 root root 4096 Jul 20 11:57 root

Następne jest /root/.ssh

drwx------  2 root root  4096 Jul 17 03:28 .ssh

Następnie /root/.ssh/authorized_keys

-rw------- 1 root root 1179 Jul 17 03:28 authorized_keys
David Wee
źródło
3

W moim przypadku uprawnienia do katalogu domowego były 775zamiast 0755lub niższe.

Cała ścieżka do pliku autoryzowanych_kluczy, tzn. /home/user/.ssh/Musi być 0755niższa.

Aditya Advani
źródło
DZIĘKUJĘ To właśnie przeczytałem o bólu głowy, który odczuwałem od tygodnia. Większość osób wspomina tylko o folderze .ssh (700) i uprawnionych kluczach (600)
Jonathan Komar,
2

Po wielu kłopotach mam rozwiązanie problemu:

Katalog domowy użytkownika nie powinien mieć uprawnień 777ani zapisu na całym świecie. W takim przypadku weryfikacja klucza SSH nie powiedzie się i musisz podać hasło do logowania.

użytkownik2357653
źródło
1

Upewnij się tylko, że konto, na które próbujesz ssh, jest użytkownikiem z hasłem na zdalnym serwerze. Właśnie uderzyłem głową w ścianę przez pół godziny, zanim znalazłem tę odpowiedź tutaj: /programming//a/14421105/758174

Pierre D.
źródło
1

Jeśli twoja /etc/ssh/sshd_configlinia nie skomentowała, to konfiguracja SSH pozwala tylko ssh na ustaloną listę użytkowników w systemie i musisz dodać do niej nowe konta:

AllowUsers root user1 user2 user3

Każdy inny użytkownik niż wymieniony powyżej, próbujący zalogować się za pośrednictwem SSH, otrzyma te tajemnicze komunikaty o błędach:

Roaming not allowed by server
Tilo
źródło
0

Dowiedziałem się, że po zmianie nazwy użytkownika i grupy (ale nie identyfikatorów) /etc/passwdi /etc/group, ale zapominając o /etc/shadowodpowiedniej zmianie , otrzymałem ten sam komunikat „Niedozwolony roaming”.

Andrzej
źródło