Z powodzeniem utworzyłem uwierzytelnianie oparte na kluczach dla użytkownika root z mojego komputera A na mój komputer B.
Teraz stworzyłem nowego użytkownika na maszynie B, tak samo jak na maszynie A, nazwijmy go USER
. Utworzyłem dla niego katalog domowy na maszynie B /home/USER
i chcę dla niego utworzyć autoryzację opartą na kluczach z maszyny A na maszynę B.
Więc uruchomiłem na maszynie A.
ssh-keygen -t rsa
, zaakceptował wszystkie ścieżki, więc/home/USER/.ssh/id_rsa
bez frazssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP
, podałem hasło i dostałem masaż
Teraz spróbuj zalogować się do urządzenia bla bla bla
Wszystko wydaje się w porządku.
Ale kiedy próbowałem się połączyć, ssh USER@BmachinesIP
zostałem poproszony o hasło. Próbowałem zobaczyć dziennik i uruchomiłem, ssh -vvv USER@BmachinesIP
a oto część wyniku:
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/USER/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.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
USER@BmachinesIP's password:
Czy ktoś może mi powiedzieć, co zrobiłem źle lub co powinienem zmienić? Być może problem dotyczy uprawnień, oto one:
na maszynie A:
drwx------ 2 USER USER SIZE DATE TIME .ssh
-rw------- 1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r-- 1 USER USER 413 2011-10-31 14:36 id_rsa.pub
i na maszynie B:
drwx------ 2 USER defaultGroup SIZE DATE TIME .ssh
-rw------- 1 USER defaultGroup SIZE DATE TIME authorized_keys
źródło
chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys
wtedy to działa. Skopiowano z odpowiedzi Maxime R. stąd: askubuntu.com/questions/54670/passwordless-ssh-not-workingTen sam problem dla mnie świeża instalacja CentOS7.
1. sprawdź uprawnienia do katalogu domowego i uprawnienia ~ / .ssh i ~ / .ssh / author_keys (zgodnie z @erik)
2. sprawdź / etc / ssh / sshd_config ustawienia i & service sshd restart (po każdej edycji) Przydatne: spróbuj „LogLevel VERBOSE” w sshd_config.
Po sprawdzeniu, czy wszystko jest w porządku, nadal pojawia się monit o hasło.
Uruchom klienta ssh z dziennikami -vvv:
Dzienniki serwera (/ var / log / secure):
Serwer ssh nie wysyła więcej informacji o błędzie do klienta, ponieważ stanowiłoby to zagrożenie bezpieczeństwa.
Gdybym uruchomił sshd na innym porcie 'sshd -p 5555 -d'. Klucz zadziałał. Logowanie bez hasła ok. WTF?
Następnie wyłączyłem selinux (ustaw SELINUX = wyłączone w / etc / selinux / config) i zrestartowałem. Następnie logowanie bez hasła działało poprawnie.
moje bieżące działające ustawienia sshd_config:
Byłoby miło wiedzieć, czy moglibyśmy zmienić coś małego w selinux, aby hasło do logowania ssh działało poprawnie. Czy ktoś może poprawić odpowiedź?
źródło
Rozwiązaniem nie jest wyłączenie SELinux, ale naprawa uprawnień SELinux do katalogu użytkownika. Kontekst katalogu użytkownika musi być ustawiony na
user_home_t
.Sprawdzić,
Jeśli kontekst katalogu użytkownika jest inny niż
user_home_t
, SELinux nie zezwoli SSH za pomocą klucza publicznego do tego katalogu użytkownika dla tego użytkownika.Naprawić,
Logowanie oparte na kluczach powinno teraz działać.
źródło