Ich habe einige Probleme mit SSH KeychainIntegration in OS X Mavericks. Ich habe versucht, mich auf der Support-Website von Apple umzuschauen, habe aber noch niemanden mit meinem Problem gesehen. Ich habe viele Leute gesehen, die anscheinend nicht so gut mit SSH umgehen können, also habe ich beschlossen, es mit einer anderen Community zu versuchen.
Erstens funktioniert meine Konfiguration. Ich kann mein Schlüsselpaar und ssh nach Bedarf für Hosts verwenden, wobei meine Anmeldeinformationen im Agenten zwischengespeichert werden. Ich kann meine zwischengespeicherten Anmeldeinformationen wie erwartet über "ssh-add -l" anzeigen. Ich werde in einem Dialogfeld im OS X-Stil aufgefordert, mein Kennwort einzugeben. Das Kontrollkästchen lautet "Kennwort in meinem Schlüsselbund speichern". Normalerweise ignoriere ich dieses Kontrollkästchen, aber wenn ich es ankreuze, wird mein Schlüssel im Schlüsselbund gespeichert. Dieser im Schlüsselbund gespeicherte Schlüssel wird jedoch anscheinend nie verwendet, da ich ein Kennwort darauf habe. Zumindest habe ich das aus verschiedenen Dingen gelernt, die ich gelesen habe. Wenn ich mein Kennwort in das Dialogfeld eingebe und der Schlüssel im Agenten zwischengespeichert ist, wird die Verbindung erfolgreich hergestellt, jedoch nicht, bevor die Meldung "Speichern des Kennworts im Schlüsselbund fehlgeschlagen" angezeigt wird. Diese Fehlermeldung hat mich veranlasst, weitere Nachforschungen anzustellen. Ich bekomme nicht gerne jedes Mal eine Fehlermeldung, wenn ich eine Verbindung herstelle.
Interessant wird es beim Betrachten der Manpage SSH_CONFIG (5) . Für den Umgang mit dem Schlüsselbund gibt es zwei Apple-spezifische Optionen: AskPassGUI und KeychainIntegration. Sie können diese in ~ / .ssh / config umschalten und so einige interessante Ergebnisse erzielen.
Wenn Sie AskPassGUI auf no setzen, wird nicht mehr ein Dialogfeld im OS X-Stil angezeigt, sondern eine Eingabetextzeile in Ihrem Terminal. Kein Problem. Wenn Sie dies jedoch tun, speichert ssh-agent Ihre Anmeldeinformationen nicht im Cache. Dies ist offensichtlich fehlerhaft und frustrierend, da ich leicht mit der Eingabeaufforderung leben könnte, wenn die Anmeldeinformationen zwischengespeichert würden.
Wenn Sie KeychainIntegration auf no setzen, gibt ssh einen schweren Fehler aus:
~/.ssh/config: line 11: Bad configuration option: KeychainIntegration
~/.ssh/config: terminating, 1 bad configuration options
Meine Frage lautet einfach: Gibt es eine Möglichkeit, die OS X-Schlüsselbundintegration für SSH tatsächlich zu deaktivieren?
Antworten:
Basierend auf dem Quellcode für die aktuelle Version von SSH, die mit Mavericks ausgeliefert wird ( hier zu finden ), scheint die Funktionalität der Konfigurationsoption
KeychainIntegration
noch nicht implementiert worden zu sein. Ich gehe davon aus, dass der Inhalt von openssh / readconf.h dieKeychainIntegration
Option nicht referenziert . Es wird jedoch auf dieaskpassgui
Option verwiesen . Das Überprüfen der Struktur "keywords" in dieser Datei zeigt in der Tat, dass diekeychainintegration
Option nicht vorhanden ist (was wiederum impliziert, dass deroBadOption
(NULL) -Op-Code zurückgegeben würde).Ein weiterer Hinweis darauf, dass die von Ihnen gewünschte Funktionalität nicht wie in der Manpage angegeben implementiert ist, ist die Datei openssh / keychain.c . Der Quellcode zeigt tatsächlich, dass das
defaults
System (dh Eigenschaftslistendateien) zum Speichern von Einstellungen verwendet wird, die sich auf beziehenKeychainIntegration
. Insbesondere Zeilen aus derstore_in_keychain
Funktionsreferenz KeychainIntegration:Hier ist die entsprechende
get_boolean_preference
Funktion. Beachten Sie, dass es verwendet wirdCFPreferencesCopyAppValue
, um einen Booleschen Wert aus der Anwendungs-ID "org.openbsd.openssh" abzurufen:Dies könnte bedeuten, dass Sie die
KeychainIntegration
Funktionalität selbst deaktivieren können, indem Sie den folgenden Standardbefehl ausführen:defaults write org.openbsd.openssh KeychainIntegration -bool NO
oder für alle Benutzer einstellen:
sudo defaults write /Library/Preferences/org.openbsd.openssh KeychainIntegration -bool NO
quelle
KeychainIntegration
,NO
via einzustellen ,defaults
wie Sie vorgeschlagen haben.ssh
dann verhält sich , als ob ich würde eingestelltAskPassGUI
in~/.ssh/config
- keine Anmeldeinformationen zwischengespeichert werden, und ich bin für das Passwort die ganze Zeit gefragt werden . Weniger als nützlich. Trotzdem denke ich, dass Sie die Frage beantwortet haben und die Antwort einfach lautet: "Sie kann deaktiviert werden, ist aber nicht vollständig implementiert und die Ergebnisse werden Ihnen wahrscheinlich nicht gefallen."