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)
źródło
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.
źródło
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.
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_keys
iauthorized_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.ssh
folderze serwera .Następnie powinieneś upewnić się, że są to uprawnienia kluczowe
chmod 600 id_example
i aby to wszystko ułatwić , możesz skonfigurować plik konfiguracyjny:~/.ssh/config
w lokalnym polu (czyli szkieletu, możesz dostosować to tonę):źródło
$ ssh user@comp -i ~/.ssh/id_rsa.pub
i 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łaDla mnie, ponieważ sam klucz był zaszyfrowany, wykonałem następujące kroki:
$ ssh-agent bash
$ ssh-add
$ ssh-add /location/of/key
Aby sprawdzić w dowolnym momencie, lista aktualnie załadowanych kluczy:
Więcej szczegółów można uzyskać pod tym linkiem
źródło
spróbuj https://wiki.gentoo.org/wiki/Keychain
Jest to coś w rodzaju zawinięcia
ssh-agent
issh-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.
źródło
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_config
lub równoważne dodanie następującego wierszaNastępnie uruchom ponownie usługę
źródło
W Mac OSX możesz dodać swój klucz prywatny do pęku kluczy, używając polecenia:
Jeśli twój klucz prywatny jest przechowywany w ~ / .ssh i nazywa się id_rsa:
Zostaniesz poproszony o podanie hasła, które będzie przechowywane w pęku kluczy.
źródło