klucz publiczny zawsze pyta o hasło i hasło

19

Próbuję połączyć się z serwerem NAS do serwera sieci Web za pomocą klucza publicznego. Użytkownik NAS to „root”, a użytkownik serwera to „backup”

Mam wszystkie uprawnienia ustawione poprawnie, a kiedy debuguję połączenie SSH, otrzymuję: (ostatnia odrobina debugowania)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

Korzystam z polecenia:

ssh -v -i /root/.ssh/id_dsa.pub [email protected]

Fakt, że prosi o hasło, jest z pewnością dobrym znakiem, ale nie chcę, aby wyświetlał monit o hasło lub hasło (które pojawia się później, jeśli naciśniesz „return” na haśle)

Andrew Atkinson
źródło

Odpowiedzi:

24

To dlatego, że Twój klucz prywatny jest szyfrowany ...

Możesz dodać swój klucz do agenta ssh za pomocą ssh-addlub usunąć hasło (a wraz z nim szyfrowanie) z klucza za pomocą następującego polecenia:

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


EDYTOWAĆ

Och, właśnie zdałem sobie sprawę, że próbujesz użyć klucza publicznego do uwierzytelnienia ... Chcesz tam użyć klucza prywatnego:

ssh -v -i /root/.ssh/id_dsa [email protected]

I dla absolutnej pewności zawartość pliku id_dsa.pubtrafia ~backup/.ssh/authorized_keysna serwer WWW. Możesz użyć następującego polecenia, aby zrobić to automatycznie

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
andrekeller
źródło
nadal dostaję problem. To zadziałało i dało mi „twoja identyfikacja została zapisana przy użyciu nowego hasła”. ale potem przy następnym logowaniu nadal prosi o hasło. Nie jestem pewien, co jeszcze spróbować ...
Andrew Atkinson,
sprawdź moją zaktualizowaną odpowiedź ... może to pomaga ...
andrekeller
dziękuję, wygląda na to, że prawdopodobnie próbowałem porównać klucz publiczny z kluczem publicznym ... Nie musiałem usuwać hasła
Andrew Atkinson
Problem polegał na tym, że użyłem mojego pubu do uwierzytelnienia (głupia pomyłka). Dzięki!
Qix,
6

Stało się tak, gdy mój prywatny klucz nie był w formacie OpenSSH.

Pierwotnie wygenerowałem swój klucz w systemie Windows za pomocą PuttyGen i otrzymywałem tę samą rzecz.

Udało mi się to naprawić, ładując klucz w PuttyGen i klikając „Konwersje”, aby uzyskać format OpenSSH.

Locane
źródło
2

Jest kilka rzeczy.

Przede wszystkim, jeśli KLUCZ prosi o hasło, klucz został wygenerowany za jego pomocą. Po drugie, jeśli system wyświetli monit o podanie hasła, klucz nie jest uwierzytelniany. Oznacza to, że musisz zregenerować klucz SSH (lub zmienić go zgodnie z sugestią @rbtux) i naprawić pliki klucze autoryzowane.

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C „komentarz opcjonalny” -f id_examplekey

Pozycje w nawiasach klamrowych to opcje, typ i rozmiar bitów (Aby powiedzieć oczywiste: dsa> rsa, 4096> 1024 - pod względem „bezpieczeństwa”).

Następnie musisz dodać klucz publiczny (.pub) do plików authorized_keysi authorized_keys2(to powszechne błędne przekonanie, że plik .pub jest przeznaczony do użytku lokalnego, jednak należy go porównać z nim). Tak więc w .sshfolderze serwera .

$ cat id_examplekey.pub >> klucze_autoryzowane {, 2}

Następnie powinieneś upewnić się, że są to uprawnienia kluczowe chmod 600 id_examplei aby to wszystko ułatwić , możesz skonfigurować plik konfiguracyjny: ~/.ssh/configw lokalnym polu (czyli szkieletu, możesz dostosować to tonę):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey
nerdwaller
źródło
ale sekcja debugowania, która brzmi: debug1: Serwer akceptuje klucz: pkalg ssh-dss blen 433 czy to nie znaczy, że klucz został zaakceptowany? Odtworzyłem ponownie bez hasła, nadal to samo? - nie mam pomysłów? Dziękuję
Andrew Atkinson,
@AndrewAtkinson Wygląda na to, że masz go poniżej. Potrzebujesz klucza prywatnego z komputera (lokalnego, klienta, cokolwiek) i klucza public.pub dodanego do plików kluczy autoryzowanych. Moje inne sugestie powinny pomóc Ci zaoszczędzić czas: D Powodzenia!
nerdwaller
Piszesz „Przede wszystkim, jeśli KLUCZ prosi o hasło, klucz został wygenerowany za jego pomocą.” <- tak, ale właśnie przetestowałem to, co zrobił pytający, więc robię -i z kluczem publicznym $ ssh user@comp -i ~/.ssh/id_rsa.pubi powiedział, że złe uprawnienia i prywatne klucz zostanie zignorowany .. więc zmieniłem uprawnienia na 600 jak id_rsa i poprosiłem o hasło. Tak więc rzeczywiście poprosi o hasło, jeśli podasz klucz publiczny, mimo że zarówno klucz publiczny, jak i klucz prywatny nie zostały wygenerowane za pomocą hasła
barlop
2

Dla mnie, ponieważ sam klucz był zaszyfrowany, wykonałem następujące kroki:

  • Uruchom ssh-agent: $ ssh-agent bash
  • Dodaj standardowy klucz tożsamości do menedżera kluczy: $ ssh-add
  • Jeśli chcesz dodać inny klucz, to: $ ssh-add /location/of/key

Aby sprawdzić w dowolnym momencie, lista aktualnie załadowanych kluczy:

$ ssh-add -l

Więcej szczegółów można uzyskać pod tym linkiem

Sibi
źródło
1

spróbuj https://wiki.gentoo.org/wiki/Keychain

Jest to coś w rodzaju zawinięcia ssh-agentissh-add

Plusy: Nie musisz wielokrotnie wpisywać hasła, dopóki nie uruchomisz się ponownie. Może być użyty w crontab.

To może być pomoc.

Gon
źródło
1

Może być tak, ponieważ używasz klucza pubs DSA, który jest domyślnie wyłączony w OpenSSH v7.

Jeśli nie możesz zmienić pary kluczy, możliwym obejściem będzie powiadomienie demona SSH na webserver.com, aby zaakceptował te typy kluczy, poprzez aktualizację /etc/ssh/sshd_configlub równoważne dodanie następującego wiersza

PubkeyAcceptedKeyTypes=+ssh-dss

Następnie uruchom ponownie usługę

/etc/init.d/ssh restart                     # or equivalent
mosh442
źródło
0

W Mac OSX możesz dodać swój klucz prywatny do pęku kluczy, używając polecenia:

ssh-add -K /path/to/private_key

Jeśli twój klucz prywatny jest przechowywany w ~ / .ssh i nazywa się id_rsa:

ssh-add -K ~/.ssh/id_rsa

Zostaniesz poproszony o podanie hasła, które będzie przechowywane w pęku kluczy.

Groot
źródło
Co muszę zrobić na kliencie Linux, jeśli klient Mac działa?
bbaassssiiee