ssh-copy-id - odmowa dostępu (publickey) [zamknięte]

30

Chcę skonfigurować tunel ssh do serwera mysql, który jest na komputerze z maszyną wirtualną. Również tunel musi działać, jeśli maszyna zostanie ponownie uruchomiona.

Powiedzmy, że A to komputer z oprogramowaniem linux. B - maszyna wirtualna na komputerze A.

MySQL znajduje się w B.

C - to maszyna wirtualna na komputerze A, która chce połączyć się z MySQL w B.

Teraz ten artykuł: http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

Próbuję skopiować klucz publiczny na zdalny serwer. Chyba muszę go skopiować na komputer A.

ssh-copy-id -i id_rsa.pub.bak [user]@[IP of A] -p [port of A]
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

Teraz próbowałem wprowadzić hasło pliku id_rsa.pub.bak. Zaprzeczył.

Potem widzę, że używa klucza w /home/[user]/.ssh/id_rsa, który jest inny niż klucz publiczny, który próbuję skopiować, oczywiście klucz prywatny jest inny, ale mam na myśli, że kopiuję klucz publiczny innego prywatny klucz. Więc próbowałem użyć tego hasła. Również odmówiono.

Jak mogę debugować, dlaczego hasło jest odrzucane?

Aktualizacja

Na podstawie komentarzy stworzyłem nowy plik publiczny o nazwie id_rsa.pub, w którym wszystko jest teraz w jednej linii

i uruchom i nadal pojawia się błąd.

ssh-copy-id -i id_rsa.pub [host and port] -vvv
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

Aktualizacja

Sprawdzono uprawnienia do folderu .ssh i pliku autoryzowanych_kluczy na komputerze A - są to 700 i 600, więc komentarz mówi, że są dobre.

Aktualizacja

Próbowałem ustawić uwierzytelnianie hasła tak na komputerze i ponownie uruchomić usługę. Ponowne uruchomienie, ponieważ odpowiedź nie zadziałała, napisano, że sshd nie został rozpoznany, więc uruchomiłem ponownie używając:

sudo /etc/init.d/ssh restart

Następnie spróbowałem ponownie na komputerze C, aby skopiować na komputer A.

ssh-copy-id -i id_rsa.pub [user@host] -p [port] -v

i wciąż to samo:

Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

Jeśli idę ręcznie skopiować klucz do uprawnionych kluczy, widzę, że klucz publiczny już istnieje, taki sam, który chcę skopiować. Zapytałem mojego współpracownika, który powiedział, że go nie skopiował. Więc nawet nie rozumiem, jak może tam być.

Ok, jeśli tak, byłoby dobrze, ale pozostanie tam nie pozwala mi połączyć się z ssh bez wpisywania hasła. Ale udało mi się połączyć z wprowadzeniem hasła. Więc coś jest nadal wyraźnie nie tak. A klucz, który próbuję skopiować, to puste hasło. Kiedy połączyłem się z ssh - wprowadziłem hasło, które nie było puste.

Ten sam klucz publiczny nie może zaakceptować pustego hasła i niepustego hasła, co ma sens. Ale dlaczego klucz publiczny, który próbuję przesłać, jest taki sam, jak klucz w pliku Author_keys, jeśli hasła są różne? Nie sprawdzałem każdej postaci, ale jest mało prawdopodobne, aby klucze były tak podobne, że początek i koniec byłyby takie same, nawet jeśli hasło jest inne.

Darius.V
źródło
Które pliki zaczynają się id_rsaod? Spodziewałbym ssh-copy-idsię niepowodzenia z komunikatem o błędzie w sposób, w jaki go nazwiesz, ponieważ oczekuje on pliku kończącego się na .pub. Jak twój koniec z .baktym prawdopodobnie skorzystałby id_rsa.pub.bak.pub.
nlu
@nlu - Mam plik id_rsa, który skopiowałem, przeciągając i upuszczając plik za pomocą notatnika ftp explorer. Mam także id_rsa.bak, który utworzyłem za pomocą nano i wkleiłem zawartość za pomocą myszy z notatnika ++, ale wyglądało na to, że utworzył ten sam tekst, ale jakoś 2 kolumny. A także mam id_rsa.pub.bak, który również zrobił z nano. W rzeczywistości ma 3 linie, ale oryginał ma wszystko w jednej linii. Nie wiem czy to ma znaczenie. Ale jak widzimy, nie dostałem komunikatu o błędzie dotyczącym nazw plików.
Darius.V
1
To robi. Zobacz tutaj na przykład: snailbook.com/faq/publickey-userauth.auto.html („Jeśli używasz edytora tekstu, uważaj , aby nie łamał linii w tym pliku.”).
nlu
Pytanie jest zamknięte, ponieważ myślą, że nie jest to system w środowisku biznesowym, ale rozwiązałem problem środowiska biznesowego.
Darius.V

Odpowiedzi:

25

Musisz się zalogować, aby skopiować klucz, nie masz dostępu do zdalnego komputera (wyłączone uwierzytelnianie nieprawidłowego klucza i hasła):

Ponownie włącz uwierzytelnianie passwd w / etc / ssh / sshd_config:

PasswordAuthentication yes

Następnie uruchom ponownie usługę:

service sshd restart

Skopiuj swój klucz publiczny:

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@HOST -p PORT
[Enter user password]

Spróbuj zalogować się ponownie, hasło nie powinno być wymagane.

Następnie wyłącz uwierzytelnianie za pomocą hasła.

Nabil Bourenane
źródło
Co jeśli ustawię PasswordAuth na yes na serwerze, który chcę się zalogować, i mogę połączyć się z Kit za pomocą hasła, ale ssh-copy-id nadal nie pyta o hasło i po prostu zapisuje Odmowę dostępu (publickey). ?
Darius.V
hej chcę powiedzieć dziękuję !!! uratowałeś mi dzień !!! Dzięki wielkie!!!
尤川豪
Dzięki @Nabil działa to również od Ubuntu 18.04. Tylko przestroga dla przyszłych czytelników: Edytuj / etc / ssh / sshd_config zgodnie z instrukcjami, a NIE ssh_config, przez nadzór (tak jak ja!). Oczywiście ssh-copy-id USER @ HOST jest oczywiście wystarczający.
Snidhi Sofpro
12

Permission denied (publickey) jest zdalnym serwerem SSH mówiącym: „Akceptuję tylko klucze publiczne jako metodę uwierzytelniania, odejdź”.

To jest twoje główne wyzwanie: dostanie się do zdalnego systemu. Gdy to zrobisz, możesz przesłać swój klucz:

  • Używanie ssh-copy-id- pozwoli ci określić inny klucz, jeśli na przykład jesteś w trakcie wymiany starego.
  • Edytuj użytkownika zdalnego, ~/.ssh/authorized_keysaby ręcznie dodać klucz.
Oli
źródło
5

W końcu znalazłem problem.

Właściwie nie musiałem kopiować klucza publicznego. Ten sam klucz publiczny jest dla obu kluczy prywatnych - z hasłem i bez hasła. Myślałem, że mam klucz prywatny bez hasła, ale tak naprawdę nie miałem. Miałem tylko .ppk bez hasła. To była brak komunikacji. Więc współpracownik stworzył klucz prywatny bez hasła i teraz mogłem się zalogować używając ssh bez hasła. Czytałem, że posiadanie bez hasła jest złe, ale współpracownik mówi, że jest w porządku. Potrzebowałem bez hasła, ponieważ muszę uruchamiać skrypt powłoki przy ponownym uruchomieniu - chcę uruchomić autossh po ponownym uruchomieniu komputera.

Tak więc tym razem rozwiązaniem jest - jeśli chcesz się zalogować bez hasła - sprawdź, czy naprawdę twój klucz prywatny nie ma hasła.

Darius.V
źródło