Für MacOS Keychain Access gilt die SSH-Passphrase auf unbestimmte Zeit

789
Charlie Hileman

Der Einfachheit halber möchte ich, dass MacOS an meiner RSA-Passphrase festhält, jedoch nicht unbegrenzt (aus Sicherheitsgründen). Ich glaube, SSH wird Keychain Access mit dieser SSH-Konfiguration verwenden

Host * UseKeychain true 

Und ich glaube, es wird ssh-agent mit dieser Konfiguration verwenden:

Host * AddKeysToAgent yes 

Ein paar Fragen:

  1. Es scheint, als gäbe es zwei Möglichkeiten: ssh-agent oder Keychain Access . Wenn Sie die Bequemlichkeit der temporären Speicherung von Passphrasen benötigen, wie lautet der Standard?
  2. 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
  3. Was ist die beste Option, wenn ich regelmäßig private Passphrasen löschen möchte? Ich könnte ssh-add -D unter einem Cron-Job verwenden
0

1 Antwort auf die Frage

1
eggo

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.

  1. Es scheint, als gäbe es zwei Möglichkeiten: ssh-agent oder Keychain Access.

Nicht genau. Siehe obige Erläuterung. Wenn Sie die UseKeychain yesDirektive in Ihrem verwenden ~/.ssh/config, kann jedes Programm, das eine Verbindung mit dem ssh-agentSocket herstellt ssh-agent, den Schlüsselbund für die Passphrase zur Entschlüsselung Ihres privaten Schlüssels verwenden. Wenn Sie auch die AddKeysToAgent yesDirektive 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.

  1. 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 sshgespeicherten 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.

  1. Was ist die beste Option, wenn ich regelmäßig private Passphrasen löschen möchte? Ich könnte ssh-add -Dunter einem Cronjob arbeiten.

Sie könnten zwar ssh-add -Din 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-agentaller entschlüsselten privaten Schlüssel löschen . Wenn Sie UseKeychain yesin Ihrer Konfig haben, ssh-agentwird 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 UseKeychainund AddKeysToAgent, wie in:

Host * UseKeychain no AddKeysToAgent no 

Fügen Sie dann ssh-agentmit 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.