Walczyłem z tym od kilku godzin, więc każda pomoc jest bardzo mile widziana ...
Mam 2x serwery, z których oba mogę ssh
z kluczami publicznymi z OSX, żadnych problemów, więc jestem pewien, że wszystko jest w porządku sshd_config
.
Próbuję skonfigurować zadanie CRON rsync
do synchronizacji dwóch serwerów i potrzebuję serwera B (kopia zapasowa) do ssh
serwera A za pomocą klucza publicznego.
Nie mogę przez całe życie dowiedzieć się, dlaczego nie znajduje moich kluczy publicznych - są w ~/.ssh/
(tj. /root/.ssh
) I wszystkie uprawnienia do plików są poprawne w punktach A i B.
To jest wynik:
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: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.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
Pamiętaj też, że szuka kluczy prywatnych, które nie istnieją ...
drwx------. 2 root root 4096 May 25 10:15 .
dr-xr-x---. 4 root root 4096 May 24 18:52 ..
-rw-------. 1 root root 403 May 25 01:37 authorized_keys
-rw-------. 1 root root 0 May 25 01:41 config
-rw-------. 1 root root 1675 May 25 02:35 id_rsa_tm1
-rw-------. 1 root root 405 May 25 02:35 id_rsa_tm1.pub
-rw-------. 1 root root 395 May 25 02:36 known_hosts
ssh
key-authentication
Danny
źródło
źródło
ls -la /root/.ssh/
_tm1
z kluczowych nazw plików (tj.mv id_rsa_tm1 id_rsa
imv id_rsa_tm1.pub id_rsa.pub
)Odpowiedzi:
Spójrz na swoją stronę man ssh:
lub strona man ssh_config:
Widzisz, istnieje kilka specjalnych nazw plików, które są wypróbowywane, jeśli nie określisz klucza. Są to również pliki widoczne w danych wyjściowych dziennika.
Aby użyć klucza w pliku o innej nazwie, masz trzy opcje:
-i
opcji.IdentityFile
opcji.ssh-add
.W przypadku sesji interaktywnych agent jest najbardziej elastyczny. Dla twojego zadania crona
-i
opcja jest prawdopodobnie najłatwiejsza.źródło
Zniekształcony plik kluczy autoryzowanych na hoście docelowym to kolejny powód, dla którego ssh wyświetla komunikat „nie wysłaliśmy pakietu” i prosi o hasło zamiast używania uwierzytelniania pubkey: -
Problem w tym konkretnym przypadku polegał na tym, że dane klucza publicznego, które zostały wklejone
.ssh/authorized_keys
na hoście docelowym, nie miały swojego pierwszego znaku:Rozwiązaniem było po prostu dodanie brakujących „s”.
A więc:-
źródło
Dokładny ciąg komunikatów o błędach w pytaniu może również wystąpić w przypadku niedopasowanej pary kluczy prywatny / publiczny po stronie lokalnej . Nie, to nie ma sensu, ale po prostu oderwałem włosy przez długi czas, próbując dowiedzieć się, co się dzieje.
.ssh/mykey.pub
skopiowany.ssh/authorized_keys
..ssh/mykey
prawidłowy klucz prywatny, który pasuje do klucza publicznego systemu A, ale ma również.ssh/mykey.pub
plik, który nie pasuje, być może poprzednia wersja zamienionego klucza.SSH z B do A (
ssh -i mykey A
) nie powiedzie się z komunikatami w pytaniu, szczególnie jeśli włączysz-vv
z klienta ssh zobaczysz:To kłamstwo, ponieważ rzeczywisty klucz nie został wypróbowany, najwyraźniej użył lokalnego pliku klucza publicznego o pasującej nazwie, aby dowiedzieć się, czy prawdopodobnie zadziała, a następnie nie zrobił nic, gdy były niezgodne. Żadna ilość informacji debugowania po żadnej ze stron tak naprawdę nie wskazuje na problem.
źródło
Domyślne nazwy plików, których szuka ssh, to
id_rsa
iid_rsa.pub
.Jeśli chcesz użyć innych nazw plików, musisz podać je w
ssh_config
(używającIdentityFile
ustawienia) lub za pomocą parametru wiersza polecenia ssh-i
.źródło
Miałem ten sam problem na RedHat; sprawdził dzienniki i stwierdził, że katalog domowy ma niepoprawne prawa użytkownika.
sshd[2507]: Authentication refused: bad ownership or modes for directory /home/user
Naprawienie praw do katalogu domowego rozwiązało to.
źródło
~/.ssh
reż. Przynajmniej na Fedorze 28, gdy~/.ssh
uprawnienia były na poziomie 0775, nie mogłem połączyć się z kluczami publicznymi / prywatnymi. Zmieniłem więc uprawnienia na 0755 iProstym sposobem debugowania w Debian / Ubuntu jest: Połącz się hasłem i ogonuj dziennik
Spróbuj połączyć się z innego terminala, a zobaczysz błąd ...
W moim przypadku katalog / root miał wartość 770, a nie 700, co jest wartością domyślną. Błąd brzmiał: „Odmowa uwierzytelnienia: złe prawo własności lub tryby katalogu / root”
Napraw to i gotowe.
źródło
Próbować
Możliwy problem z kontekstem sprzedaży
źródło
Po bieganiu
ssh-copy-id user@remote-host
normalnie powinno działać. Ale jeśli się nie powiedzie, spróbuj tego: zaloguj się do zdalnego hosta jako użytkownik, którego chcesz się zalogować w przyszłości i uruchom:
Pomogło mi to.
źródło
Tak więc stało się dla mnie, że mam 2 maszyny wirtualne, do których mam dostęp z mojego komputera lokalnego (2 klucze id_rsa.pub i id_rsa2.pub). Zrozumiałem, że moje połączenie ssh domyślnie używa id_rsa.pub dla każdego połączenia ssh uż[email protected]. Rozwiązałem problem, dodając plik konfiguracyjny i określając tożsamość, która ma być używana dla każdego hosta, w następujący sposób:
źródło
klient:
źródło