Автоматично додані ключі
Існують три способи додавання ключів 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/
каталоги для інших типів завдань.