Автоматично додані ключі
Існують три способи додавання ключів SSH ssh-агент в снігу
Леопард.
- вручну, з ssh-add ,
- автоматично ssh при введенні ключової фрази ключа
графічного інтерфейсу, і
- автоматично ssh-агент під час першого запуску.
Останні два способи - розширення Apple: немає автоматичного
доповнення з акціями OpenSSH. Всі посилання на ssh , ssh-агент ,
і ssh-add нижче наведені версії Apple Snow Leopard, якщо
Я прикріплюю назву програми з прикметним «запасом».
Ви можете вимкнути всі модифікації SSH, орієнтовані на брелок Apple
із налаштуваннями (без документів?):
defaults write org.openbsd.openssh KeychainIntegration -bool false
Клавіші додані автоматично ssh
(Це частина, яку я пропустив у попередній версії мого оригіналу
відповідь, оскільки я зазвичай використовую "акції" ssh .)
Всякий раз ssh намагається використовувати ключ SSH, захищений паролем
аутентифікувати себе на віддаленому хості, він видасть запит GUI для
пароль ключа SSH. Ключ також завантажується в агент (якщо
чи правильно вказано фразу, незалежно від того, чи ви позначите пункт “Запам'ятати
пароль у моєму ключі ».
Є два (недокументовані) способи запобігання ssh від видачі
це підказка GUI (і, таким чином, додати ключ SSH до ssh-агент ):
Налаштування параметрів:
defaults write org.openbsd.openssh AskPassGUI -bool false
An ssh_config запис (або -o опцію ssh ), що вказує AskPassGUI no.
(подивитися keychain_read_passphrase в keychain.c;
oAskPassGUI Параметр походить від AskPassGUI налаштування конфігурації)
Коли AskPassGUI вимкнено, ssh підкаже вам у звичайному режимі
для пароля ключа (тобто через tty).
Ви також можете уникнути автоматичного додавання ssh за допомогою "акції" ssh (наприклад, OpenSSH компілюється MacPorts , Домашнє "Дублікати" від домороще-альт або Fink ).
Клавіші додані автоматично ssh-агент
Клавіші, які ssh-агент автоматично додаються ті, що мають
їхні фрази зберігаються в брелоку.
Це "Запам'ятовані ключі" автоматично додаються після нового ssh-агент починається.
Немає командного рядка або опції налаштування (окрім KeychainIntegration, описані вище) для запобігання ssh-агент від
автоматично завантажує "запам'ятовані ключі" (див. виклик до process_add_from_keychain (визначено в keychain.c ) від main в ssh-agent.c ).
Якщо, однак, можна організувати блокування брелоків, які зберігають ваші
За допомогою ключових слів SSH можна натиснути кнопку Скасувати, коли ssh-агент просить
розблокувати брелок (и) і ефективно отримати ssh-агент пропустити
додавання цих “запам'ятованих ключів” під час першого запуску.
Якщо немає ssh-агент працює, ваше перше використання ssh волі
ймовірно, тригер launchd , щоб почати ssh-агент які будуть завантажувати всі
"запам'ятовані ключі". Це робить його схожим ssh завантажує
ключі в агента, але насправді це сам агент
завантаження ключів. Він робить це автоматично, коли він перший
починається.
The -k варіант ssh-add надає ручний спосіб додавання
“Запам'ятовані ключі” (див add_from_keychain в ssh-add.c який закінчується повідомленням агенту, який викликає process_add_from_keychain від process_message в ssh-agent.c ).
launchd Конфігурація
Ви маєте рацію, що системне оновлення може перезаписати вашу зміну файлу /System/Library/LaunchAgents/. Ви завжди повинні уникати мінливих речей /System/; більшість речей можна (повторно) налаштувати без внесення змін. У цьому випадку, схоже, ви маєте можливість перевизначити системне значення за умовчанням launchd специфікація завдання для кожного користувача з файлом у ~/Library/LaunchAgents/.
З того, що я можу сказати 1 , записи завантажуються у цьому порядку 2 :
~/Library/LaunchAgents/
/Library/LaunchAgents/
/Network/Library/LaunchAgents/ (немає в більшості систем)
/System/Library/LaunchAgents/
Здається, це не документально, а лише перша конфігурація завдання для кожної мітки (наприклад, org.openbsd.ssh-agent ) буде збережено. Будь-яка конфігурація з більш пізнього каталогу з тією ж етикеткою, що й конфігурація з більш раннього каталогу, фактично пропускається.
1 Подивитися NSStartSearchPathEnumeration використовується в launchctl.c і визначено в NSSystemDirectories.h / NSSystemDirectories.c.
2
launchd також виглядає в LaunchDaemons/ каталоги поруч з різними LaunchAgents/ каталоги для інших типів завдань.