Jak mogę zmienić hasło do klucza prywatnego?

283

Mam istniejącą parę kluczy publiczny / prywatny. Klucz prywatny jest chroniony hasłem, a szyfrowanie może być RSA lub DSA. Te klucze są rodzajem generowanym ssh-keygeni zwykle przechowywanym pod ~/.ssh.

Chciałbym zmienić hasło klucza prywatnego. Jak mam to zrobić na standardowej powłoce uniksowej?

Jak mogę po prostu usunąć hasło? Zmienić to na puste?

kch
źródło

Odpowiedzi:

371

Aby zmienić hasło w domyślnym kluczu DSA:

$ ssh-keygen -p -f ~/.ssh/id_dsa

następnie podaj swoje stare i nowe hasło (dwukrotnie) po wyświetleniu monitu. (Użyj, ~/.ssh/id_rsajeśli masz klucz RSA.)

Więcej informacji man ssh-keygen:

[...]
SYNOPSIS
    ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]
               [-f output_keyfile]
    ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
[...]
     -f filename
             Specifies the filename of the key file.
[...]
     -N new_passphrase
             Provides the new passphrase.

     -P passphrase
             Provides the (old) passphrase.

     -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.
[...]
Mike Mazur
źródło
1
To pochodzi ze strony podręcznika wysyłanej z net-misc / openssh-5.2_p1-r2 w Gentoo Linux.
Mike Mazur,
12
Również ze względu na przyszłą leniwą osobę odwróciłbym kolejność: najpierw automatyczna sekretarka, później strona podręcznika.
kch
2
Myślę, że odpowiedź jest świetna, ponieważ pokazuje zarówno, gdzie można zmienić hasło, jak i gdzie szukać odpowiedzi. Pomogłem wielu osobom konfigurującym klucze ssh, a dla nich zapamiętanie używanego narzędzia nie zawsze jest łatwe. Poza tym poszukiwanie odpowiedzi w sieci jest pierwszą opcją dla wielu ...
sastorsl
5
Jeśli twoje maszyny używają OpenSSH> = 6.5, powinieneś skorzystać z -oopcji, aby włączyć nowy format klucza prywatnego (domyślnie bcrypt jako KDF). W starszych wersjach OpenSSH użyj PKCS # 8, aby uzyskać bezpieczniejsze pliki kluczy prywatnych .
Quinn Comendant
2
@FranciscoLuz polecenie w mojej odpowiedzi jest specyficzne dla klucza DSA. Jeśli masz klucz RSA, twoje polecenie jest poprawne. Dodałem napis do odpowiedzi, aby rozwiązać ten problem.
Mike Mazur
-9

Usuń klucze publiczne / prywatne SSH:

rm ~/.ssh/id_rsa*

Odtwórz parę kluczy, wybierając nowe hasło:

ssh-keygen -t rsa -f ~/.ssh/id_rsa

Dodaj nowo utworzony klucz prywatny do pęku kluczy OS X, aby przechowywać hasło i zarządzać automatycznym odblokowaniem:

ssh-add -K ~/.ssh/id_rsa

Skopiuj klucz publiczny do schowka OS X, aby dodać go do usług internetowych, takich jak GitHub itp.

cat ~/.ssh/id_rsa.pub | pbcopy

Dodaj nowo utworzony klucz publiczny do ~/.ssh/authorized_keyspliku zdalnego serwera. Upewnij się, że masz odpowiednie uprawnienia zarówno do ~/.sshfolderu zdalnego (700), jak i ~/.ssh/authorized_keys(600). Możesz to sprawdzić za pomocą, ssh-copy-idaby ułatwić ten proces.

gauta
źródło
3
Plakat zapytał, jak zmienić hasło na kluczu, a nie wyrzucić je i wygenerować nowe; i nigdy nie wspominali o OS X.
musicinmybrain
2
Poparłbym tę odpowiedź, gdyby nie te trzy problemy: 1. Usunięcie starych kluczy nie jest dobrym początkiem, ponieważ będą potrzebne podczas aktualizacji authorized_keys. 2. Nie wspomniałeś, dlaczego tworzenie nowych kluczy jest lepsze niż zmienianie haseł na starych. 3. Przyjmujesz założenia dotyczące systemu operacyjnego, który nie jest obsługiwany przez pytanie.
kasperd