Wie ändere ich meine Passphrase für den privaten Schlüssel?

284

Ich habe ein öffentliches / privates Schlüsselpaar. Der private Schlüssel ist passwortgeschützt und die Verschlüsselung kann entweder RSA oder DSA sein. Diese Schlüssel werden von Ihnen generiert ssh-keygenund im Allgemeinen unter gespeichert ~/.ssh.

Ich möchte das Passwort des privaten Schlüssels ändern. Wie gehe ich auf einer Standard-Unix-Shell vor?

Wie entferne ich einfach das Passwort? Ändern Sie es einfach zu leer?

kch
quelle

Antworten:

372

So ändern Sie die Passphrase auf Ihrem Standard-DSA-Schlüssel:

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

Geben Sie dann Ihre alte und neue Passphrase (zweimal) an den Eingabeaufforderungen ein. (Verwenden ~/.ssh/id_rsaSie diese Option, wenn Sie einen RSA-Schlüssel haben.)

Weitere Details von 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
quelle
1
Dies ist von der Manpage, die mit net-misc / openssh-5.2_p1-r2 unter Gentoo Linux ausgeliefert wird.
Mike Mazur
12
Außerdem würde ich der zukünftigen faulen Person zuliebe die Reihenfolge umkehren: Schnellantwort zuerst, Manpage später.
KCH
2
Ich denke, die Antwort ist großartig, da sowohl angezeigt wird, wo Sie das Passwort ändern können, als auch, wo Sie nach der Antwort suchen müssen. Ich habe vielen Leuten geholfen, ssh-Schlüssel einzurichten, und für sie ist es nicht immer einfach, sich daran zu erinnern, welches Tool sie verwendet haben. Außerdem ist die Suche nach der Antwort im
Internet
5
Wenn Ihre Computer OpenSSH> = 6.5 verwenden, sollten Sie die -oOption verwenden , um das neue private Schlüsselformat zu aktivieren (standardmäßig als KDF verschlüsseln). Verwenden Sie in älteren OpenSSH-Versionen PKCS # 8 für sicherere private Schlüsseldateien .
Quinn Comendant
2
@FranciscoLuz Der Befehl in meiner Antwort ist spezifisch für einen DSA-Schlüssel. Wenn Sie einen RSA-Schlüssel haben, ist Ihr Befehl korrekt. Ich habe der Antwort ein Klappentext hinzugefügt, um dies zu beheben.
Mike Mazur
-9

Entfernen Sie Ihre öffentlichen / privaten SSH-Schlüssel:

rm ~/.ssh/id_rsa*

Erstellen Sie das Schlüsselpaar neu und wählen Sie eine neue Passphrase:

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

Fügen Sie den neu erstellten privaten Schlüssel zu Ihrem OS X-Schlüsselbund hinzu, um die Passphrase zu speichern und das automatische Entsperren zu verwalten:

ssh-add -K ~/.ssh/id_rsa

Kopieren Sie den öffentlichen Schlüssel in die Zwischenablage von OS X, um ihn zu Webdiensten wie GitHub usw. hinzuzufügen.

cat ~/.ssh/id_rsa.pub | pbcopy

Fügen Sie Ihren neu erstellten öffentlichen Schlüssel zur ~/.ssh/authorized_keysDatei des Remote-Servers hinzu. Stellen Sie sicher, dass Sie die richtigen Berechtigungen für den Remote- ~/.sshOrdner (700) und ~/.ssh/authorized_keys(600) haben. Möglicherweise möchten Sie nachforschen ssh-copy-id, um diesen Vorgang zu vereinfachen.

gauta
quelle
3
Auf dem Poster wurde gefragt, wie die Passphrase auf dem Schlüssel geändert, nicht weggeworfen und eine neue generiert werden soll. und sie haben OS X nie erwähnt.
musicinmybrain
2
Ohne diese drei Punkte hätte ich diese Antwort positiv bewertet: 1. Das Löschen der alten Schlüssel ist kein guter Anfang, da Sie diese zum Aktualisieren benötigen authorized_keys. 2. Sie haben nicht erwähnt, warum das Erstellen neuer Schlüssel besser ist als das Ändern von Kennwörtern auf dem alten. 3. Sie treffen Annahmen über das Betriebssystem, die von der Frage nicht unterstützt werden.
Kasperd