По умолчанию OpenSSH просто не делает то, что вы хотите. Программа ssh будет использовать любой ключ, который уже загружен в сконфигурированный агент, но никогда не добавляет ключи к агенту.
Поведение «добавить к агенту любой ключ, защищенный паролем, используемый ssh » связано с изменениями Apple в версии ssh, входящей в комплект Mac OS X.
Типичный прогон ssh будет использовать load_identity_file
из sshconnect2.c
.
Apple добавляет к load_identity_file
вызову keychain_read_passphrase
из keychain.c
(этот файл полностью идет от Apple).
keychain_read_passphrase
использует ssh_add_identity_constrained
от authfd.c
хранить загруженный ключ в агент.
Единственный другой пользователь ssh_add_identity_constrained
является ssh-add.c
( SSH-надстройка ); «константы» нижнего уровня SSH2_AGENTC_ADD_IDENTITY
и SSH2_AGENTC_ADD_ID_CONSTRAINED
используются только в authfd.c
in ssh-agent.c
( ssh-agent ).
Таким образом, обычно только ssh-add загружает ключи в агент, но Apple расширяет ssh, чтобы также загружать ключи в агент, когда он запрашивает кодовую фразу ключа в своем графическом интерфейсе.