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)?
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.
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.
Bad passphrase
naid_ed25519
klucz, ale hasło jest poprawne, to prawdopodobnie przy użyciu niższego poziomussh-keygen
do zarządzania nim.Odpowiedzi:
Wypróbuj polecenie
ssh-keygen -p -f keyfile
Ze strony podręcznika ssh-keygen
Przykład:
źródło
$ 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.Proc-Type: 4,ENCRYPTED
nagłó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.Użyj opcji -p, aby ssh-keygen. Umożliwia to zmianę hasła zamiast generowania nowego klucza.
Zmień hasło, jak pokazuje sigjuice:
Wymagane hasło będzie nowym hasłem. (Zakłada się, że dodałeś klucz publiczny
~/.ssh/id_rsa.pub
do plików autoryzowanych_kluczy.) Przetestuj za pomocą ssh:Możesz mieć wiele kluczy o różnych nazwach do różnych zastosowań.
źródło
ssh-add -D
aby usunąć swoją pamięć podręczną. Następnie spróbuj połączyć się ponownie, a poprosi o podanie hasła. Użyj,ssh-add -l
aby zobaczyć listę twoich tożsamości w pamięci podręcznej.Możesz także użyć
openssl
:patrz: https://security.stackexchange.com/a/59164/194668
źródło