Default OpenSSH macht einfach nicht das, was Sie wollen. Die ssh Programm verwendet einen beliebigen Schlüssel, der bereits in den konfigurierten Agenten geladen ist, fügt dem Agenten jedoch keine Schlüssel hinzu.
Das Verhalten „Hinzufügen eines von ssh verwendeten passwortgeschützten Schlüssels zum Agenten “ ist darauf zurückzuführen, dass Apples die Version von ssh, die mit Mac OS X gebündelt wird, ändert.
Eine typische Ausführung von ssh wird load_identity_file
von verwendetsshconnect2.c
.
Apple fügt zu load_identity_file
einem Anruf keychain_read_passphrase
von hinzukeychain.c
(diese Datei stammt vollständig von Apple).
keychain_read_passphrase
verwendet ssh_add_identity_constrained
von authfd.c
, um den geladenen Schlüssel im Agenten zu speichern.
Der einzige andere Benutzer von ssh_add_identity_constrained
is ssh-add.c
( ssh-add ); die unterste Ebene „Konstanten“ SSH2_AGENTC_ADD_IDENTITY
und SSH2_AGENTC_ADD_ID_CONSTRAINED
werden auch nur authfd.c
in ssh-agent.c
( ssh-agent ) verwendet.
Daher lädt normalerweise nur ssh-add Schlüssel in den Agenten, aber Apple erweitert ssh, um auch Schlüssel in den Agenten zu laden, wenn seine GUI nach der Passphrase eines Schlüssels fragt.