Jak dodać hasło do klucza prywatnego OpenSSH wygenerowanego bez hasła?


213

Wygenerowałem klucz prywatny OpenSSH za pomocą puttygen (i wyeksportowałem go w formacie OpenSSH). Jak mogę wprowadzić hasło do tego istniejącego klucza (wiem, jak wygenerować nowy klucz za pomocą hasła)?


13
Jeśli zobaczysz ten komentarz, zaznacz jedną z odpowiedzi jako zaakceptowanych lub napisz komentarz z informacją o tym, co przegapili. Dzięki!
Benjamin Atkin

1
Dodawanie jest takie samo jak zmiana lub usunięcie: stackoverflow.com/questions/112396/… , możliwe to samo dla zmiany: serverfault.com/questions/50775
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Jeśli masz Bad passphrasena id_ed25519klucz, ale hasło jest poprawne, to prawdopodobnie przy użyciu niższego poziomu ssh-keygendo zarządzania nim.
jww

Odpowiedzi:


350

Wypróbuj polecenie ssh-keygen -p -f keyfile

Ze strony podręcznika ssh-keygen

 -p      Requests changing the passphrase of a private key file instead of
         creating a new private key.  The program will prompt for the file
         containing the private key, for the old passphrase, and twice for
         the new passphrase.

 -f filename
         Specifies the filename of the key file.

Przykład:

ssh-keygen -p -f ~/.ssh/id_rsa

5
Dla tych, którzy chcą wiedzieć, co to jest -f: określa plik wejściowy.
Neikos,

4
//, @sigjuice, czy mógłbyś zamieścić przykład, na przykład $ ssh-keygen -p -f /Users/sigjuice/.ssh/id_rsa? Może to pomóc osobom, które nie wiedzą, jak odróżnić klucz publiczny od prywatnego, i pomóc im szybciej zmoczyć stopy.
Nathan Basanese

Z jakiegoś powodu w systemie MacOS 10.14 nie formatuje pliku z Proc-Type: 4,ENCRYPTEDnagłówkiem, co jest niezgodne z niektórymi aplikacjami sprawdzającymi hasło. Po wypróbowaniu kilku sposobów na jego uruchomienie, najłatwiejszym sposobem obejścia tego było po prostu zrobienie tego samego w kontenerze Docker z systemem Ubuntu, a następnie skopiowanie klucza z powrotem na komputer Mac.
ryanbrainard

38

Użyj opcji -p, aby ssh-keygen. Umożliwia to zmianę hasła zamiast generowania nowego klucza.

Zmień hasło, jak pokazuje sigjuice:

ssh-keygen -p -f ~/.ssh/id_rsa

Wymagane hasło będzie nowym hasłem. (Zakłada się, że dodałeś klucz publiczny ~/.ssh/id_rsa.pubdo plików autoryzowanych_kluczy.) Przetestuj za pomocą ssh:

ssh -i ~/.ssh/id_rsa localhost

Możesz mieć wiele kluczy o różnych nazwach do różnych zastosowań.


//, Czy możesz pokazać przykład i jak sprawdzić, czy opcja zadziałała, @BillThor?
Nathan Basanese

Nie rozumiem. Hasło jest ustawione, widzę, gdy próbuję go zmienić ponownie. Ale kiedy próbuję zalogować się na zdalnym serwerze, nie pyta o hasło, dlaczego?
Luka,

1
W porządku. Pyta raz na sesję :) Nie wiedziałem o tym.
Luka

Czy to oznacza, że ​​musisz się wylogować i zalogować ponownie? Zamykanie okna terminala i jego ponowne otwieranie nie działa dla mnie.
Simon H

Możesz wpisać, ssh-add -Daby usunąć swoją pamięć podręczną. Następnie spróbuj połączyć się ponownie, a poprosi o podanie hasła. Użyj, ssh-add -laby zobaczyć listę twoich tożsamości w pamięci podręcznej.
Scott Nedderman

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.