macOS 10.12 Sierra vergisst meine Passphrase für die SSH-Schlüsseldatei nicht

25

Nachdem ich eine neue verschlüsselte id-rsaSchlüsseldatei erstellt ssh-keygenund zum ersten Mal verwendet habe, kann ich nicht dafür sorgen, dass macOS die Passphrase vergisst. Dies ist vergleichbar mit der Vorgehensweise, mit der OS X die Frage nach der Passphrase des SSH-Schlüssels nicht merkt , sondern verschlechtert.

Ich habe versucht, den ssh-agentComputer neu zu starten, den Computer zu töten und alle meine Schlüsselbunde zu sperren, aber es scheint immer noch irgendwo gespeichert zu sein. Ich kann es jedoch in keinem Schlüsselanhänger finden. Dies scheint sehr unsicher zu sein. Die mit Keychain / ssh-agent nie entfernten Antworten auf das Kennwort des privaten SSH-Schlüssels helfen ebenfalls nicht.

Tatsächlich scheint das Dialogfeld, in dem Sie gefragt wurden, ob Sie die Passphrase speichern möchten oder nicht, nicht mehr zu existieren.

Hogliux
quelle
Haben Sie überprüft, ob es überhaupt verschlüsselt ist?
John Keates
Ja. Ich bin mir ziemlich sicher, dass ssh bei der ersten Verwendung nach der Passphrase fragt. Kann das tatsächlich jemand reproduzieren?
Hogliux
Nun, so funktioniert es auch mit meinem Setup, so wurde ssh / ssh-agent konfiguriert.
John Keates
Dies ist der Fall, wenn Sie das Kontrollkästchen aktivieren, um macOS anzuweisen, die Passphrase im Schlüsselbund zu speichern. Wenn Sie dieses Kontrollkästchen jedoch nicht aktivieren, sollte macOS immer nach der Passphrase fragen. Aber selbst wenn Sie darauf geklickt haben, konnten Sie es im Schlüsselbund-Dienstprogramm immer wieder entfernen. Seit Sierra erscheint das Dialogfeld nicht mehr und es gibt keinen Eintrag im Schlüsselbund-Dienstprogramm.
Hogliux
Dies ist das Dialogfeld, über das ich spreche und das anscheinend nicht mehr existiert: dribin.org/dave/resources/pictures/ssh_leopard_dialog.png
hogliux

Antworten:

27

Um das Speichern von Passphrasen im Schlüsselbund zu deaktivieren, sollten Sie der Datei ~ / .ssh / config folgende Zeilen hinzufügen :

Host *
UseKeyChain no

Wenn Sie bereits eine Passphrase im Schlüsselbund gespeichert haben, können Sie diese mit den folgenden Befehlen löschen:

cd ~/Library/Keychains/<UUID>/
sqlite3 keychain-2.db 'delete from genp where agrp="com.apple.ssh.passphrases"'

Wenn Sie ein Verhalten wie in OS X El Capitan oder früher haben möchten (dh, die Passphrase wird bis zum Abmelden oder Neustarten gespeichert), fügen Sie einfach ~ / .ssh / config hinzu:

AddKeysToAgent yes

Sie müssen ssh-agent nicht starten.

mbamac
quelle
1
Diese Antwort löst das Problem dauerhaft! Also habe ich dies als die richtige Antwort markiert. Vielen Dank!
Hogliux
vorgeschlagen edit: Wechsel Library/Keychains/<UUID>/zu der ~/Library/Keychains/<UUID>/Übersichtlichkeit halber :)
Mohamed Hafez
Vorgeschlagene Änderung
20

Dank Clive verstehe ich diese neue Funktion besser. Wenn Sie Ihr Passwort eingeben, fügt Sierra es Ihrem Schlüsselbund hinzu, jedoch nicht dem ssh-agent. Wenn sich Ihre Identität nicht in ssh-agent befindet, können Sie sie nicht verwalten ssh-add. Um Ihre Identität aus dem Schlüsselbund zu verwalten (dh zu entfernen), müssen Sie Ihre Identität ssh-agentmithilfe von hinzufügen ssh-add. Nachdem Sie Ihre Identität hinzugefügt haben, können ssh-agentSie ssh-add -K -dsie mit sowohl aus ssh-agentals auch aus dem Schlüsselbund entfernen . Wenn Sie möchten, dass Ihre Identität bei jeder Verwendung von ssh add zu ssh-agent hinzugefügt wird, gehen Sie wie folgt vor:

AddKeysToAgent yes

zu deinem .ssh/config. Dadurch wird sichergestellt, dass ssh-agentimmer Ihre Identität hat.

Gene Frenkler
quelle
Nur eine Fortsetzung. Wenn Sie "UseKeyChain no" zu Ihrer .ssh / config-Datei hinzufügen, verhindert dies, dass der Schlüsselbund Ihre Passphrase hinzufügt. Wenn Sie "AddKeysToAgent yes" in ssh-agent beibehalten möchten, wird Ihre Passphrase beibehalten, bis Sie den Computer neu starten oder ssh-add -d verwenden.
Gene Frenkler
Beachten Sie, dass hierfür das von Apple gelieferte OpenSSH verwendet werden muss. Dieser Patch ist abhomebrew/dupes/openssh: stable 7.3p1
Ryan Gibbons
3
ssh-add -K -d

Dadurch können zuvor im Schlüsselbund gespeicherte Passphrasen entfernt werden. Um zu vermeiden, dass die Passphrase erneut im Schlüsselbund gespeichert wird, müssen Sie dies seit macOS 10.12 Sierra tun ssh-add.

Clive Lin
quelle
Ja. Dies funktionierte früher mit früheren Versionen von macOS Sierra. Funktioniert aber nicht mehr. macOS Sierra merkt sich immer noch die Passphrase.
Hogliux
1
OKAY. Mehr Untersuchung. Es vergisst es einmal, aber es wird sofort wieder in den Schlüsselbund verschoben, nachdem es irgendwo verwendet wurde (ssh, scp, git usw.). Ein freundlicher Fremder hat mir direkt eine E-Mail geschickt und festgestellt, dass die Passphrase in ~ / Library / Keychains / <SOME-UUID> /keychain-2.db gespeichert zu sein scheint. Aber auch wenn Sie meinen Login-Schlüsselbund (und alle anderen Schlüsselbunde) sperren, fragt os x beim Zugriff auf die Passphrase nicht nach meinem Schlüsselbundkennwort. Das scheint wirklich nicht richtig zu sein.
Hogliux
In der Tat scheint es, dass in Sierra die Passphrase in diesem Schlüsselbund gespeichert wird und nicht in dem üblichen Login-Schlüsselbund.
m1keil