Bevor wir anfangen, wollen wir ein paar Punkte klären:
- Mit macOS können Sie die Passphrasen für den privaten Schlüssel im macOS-Schlüsselbund speichern .
- ssh-agent (auf macOS oder einem beliebigen System) speichert den entschlüsselten privaten Schlüssel im Speicher .
Die Unterscheidung ist wichtig, um Ihre Fragen zu beantworten.
- Es scheint, als gäbe es zwei Möglichkeiten: ssh-agent oder Keychain Access.
Nicht genau. Siehe obige Erläuterung. Wenn Sie die UseKeychain yes
Direktive in Ihrem verwenden ~/.ssh/config
, kann jedes Programm, das eine Verbindung mit dem ssh-agent
Socket herstellt ssh-agent
, den Schlüsselbund für die Passphrase zur Entschlüsselung Ihres privaten Schlüssels verwenden. Wenn Sie auch die AddKeysToAgent yes
Direktive verwenden, wird der entschlüsselte Schlüssel zur späteren Verwendung im Agenten gespeichert. Auch nützlich, um eine andere verwandte Frage zu sehen .
... Wenn Sie die Bequemlichkeit der temporären Speicherung von Passphrasen benötigen, wie lautet der Standard?
Es gibt (meines Wissens) keine Möglichkeit, die Passphrasen vorübergehend durch macOS zu speichern . Es kann jedoch eine fast befriedigende Lösung für fast dieselbe Wirkung erzielt werden - siehe Antwort auf Frage 3 unten.
- Wie kann ich die Passphrase für meinen privaten Standardschlüssel in Keychain Access ermitteln und löschen? Ich sehe einen nicht benannten privaten Schlüssel, möchte ihn jedoch nicht löschen, ohne sicher zu sein, dass es sich um meinen gespeicherten SSH-Schlüssel handelt.
Wenn Sie Keychain Access auf Ihrem Mac öffnen und danach suchen ssh
, wird Ihre Passphrase für den ssh-Schlüssel wahrscheinlich nicht angezeigt. Beginnend mit macOS Sierra (10.12) verschob Apple die ssh
gespeicherten Schlüsselbundschlüssel. Um es zu sehen, müssen Sie "View >> Show Invisible Items" auswählen und dann werden die Passphraseneinträge für den ssh-Schlüssel sichtbar.
Die Wahrscheinlichkeit ist, dass der "unbenannte private Schlüssel" ein anderer RSA- (oder DSA-) Schlüssel war.
- Was ist die beste Option, wenn ich regelmäßig private Passphrasen löschen möchte? Ich könnte
ssh-add -D
unter einem Cronjob arbeiten.
Sie könnten zwar ssh-add -D
in einen Cron-Job wechseln, und es würde wahrscheinlich einiges von dem tun, was Sie möchten, es würde jedoch nicht die Passphrasen aus dem Schlüsselbund entfernen . Es würde nur den Speicher des Laufens ssh-agent
aller entschlüsselten privaten Schlüssel löschen . Wenn Sie UseKeychain yes
in Ihrer Konfig haben, ssh-agent
wird der Schlüssel beim nächsten Mal erneut glücklich entschlüsselt (siehe Antwort auf Frage 1 oben).
Eine Alternative Ihre Implied Wunsch zu erfüllen, nicht haben Schlüssel zur Verfügung die ganze Zeit entschlüsselt ist sowohl auszuschalten UseKeychain
und AddKeysToAgent
, wie in:
Host * UseKeychain no AddKeysToAgent no
Fügen Sie dann ssh-agent
mit begrenzter Lebensdauer manuell Schlüssel hinzu, indem Sie die -t <lifetime>
Option to verwenden ssh-add
, wie in:
ssh-add -t 4h ~/.ssh/id_rsa
Dadurch wird Ihr (Standard-) RSA-Schlüssel mit einer Lebensdauer von 4 Stunden zum Agenten hinzugefügt. Nach vier Stunden wird der Schlüssel automatisch entfernt.
Soweit ich weiß, gibt es keine Anweisung für Ihren Benutzer ~/.ssh/config
, die Standardlebensdauer eines dem Agenten hinzugefügten Schlüssels anzugeben, noch gibt es einen Weg im System sshd_config
. Allerdings gibt kann ein Weg sein, macOS zu sagen, das Mittel mit einem Standardlebensdauer unter Verwendung der Start - -t <lifetime>
Option. Für das intrepid wird die Plist-Datei des Startagenten in gespeichert /System/Library/LaunchAgents/com.openssh.ssh-agent.plist
.
Ein anderer , möglicherweise noch relevanter Ansatz sperrt den Schlüsselbund während des Schlafens.