Для удобства я хотел бы, чтобы MacOS держал мою парольную фразу RSA, но не бесконечно (ради безопасности). Я верю, что SSH будет использовать Keychain Access с этой конфигурацией SSH

Host *
     UseKeychain true

И я верю, что он будет использовать ssh-agent с этой конфигурацией:

Host *
     AddKeysToAgent yes

Несколько вопросов:

  1. Кажется, что есть два варианта: ssh-agent или Keychain Access. Если вам нужно удобство временного хранения парольных фраз, какой стандарт?
  2. Как я могу определить и очистить парольную фразу для моего закрытого ключа по умолчанию в Keychain Access? Я вижу безымянный закрытый ключ, но я не хочу удалять его, не зная наверняка, что это мой сохраненный ключ SSH
  3. Каков наилучший вариант, если я хочу регулярно очищать пароли от закрытых ключей? Я мог бы использовать ssh-add -D под заданием cron

1 ответ1

1

Прежде чем мы начнем, давайте уточним пару моментов:

  • macOS позволит вам хранить парольные фразы закрытого ключа в цепочке ключей macOS.
  • ssh-agent (в macOS или любой другой системе) хранит расшифрованный закрытый ключ в памяти.

Различие важно, чтобы ответить на ваши вопросы.

  1. Кажется, что есть два варианта: ssh-agent или Keychain Access.

Не совсем. Смотрите разъяснение выше. Если вы используете директиву UseKeychain yes в вашем ~/.ssh/config , то любая программа, подключающаяся к сокету ssh-agent , позволит ssh-agent войти в связку ключей для ключевой фразы для расшифровки вашего закрытого ключа. Если вы также используете директиву AddKeysToAgent yes , этот расшифрованный ключ будет сохранен в агенте для последующего использования. Также полезно увидеть еще один связанный с этим вопрос.

... Если вам нужно удобство временного хранения парольных фраз, какой стандарт?

Насколько мне известно, MacOS не может временно хранить пароли. Однако можно получить частично удовлетворительное решение для почти такого же эффекта - см. Ответ на вопрос 3 ниже.

  1. Как я могу определить и очистить парольную фразу для моего закрытого ключа по умолчанию в Keychain Access? Я вижу безымянный закрытый ключ, но не хочу его удалять, не зная наверняка, что это мой сохраненный SSH-ключ.

Если вы откроете Keychain Access на своем Mac и начнете поиск по ssh , скорее всего, вы не увидите ключевую фразу ssh. Начиная с macOS Sierra (10.12), Apple перенесла, какие ssh ключи цепочки для ключей были сохранены. Чтобы увидеть его, вам нужно выбрать «View >> Show Invisible Items», и тогда записи парольной фразы ключа ssh будут видны.

Скорее всего, "безымянный закрытый ключ", который вы видели, был каким-то другим ключом RSA (или DSA).

  1. Каков наилучший вариант, если я хочу регулярно очищать пароли от закрытых ключей? Я мог бы использовать ssh-add -D под заданием cron.

Хотя вы можете поместить ssh-add -D в работу cron, и она, вероятно, сделает то, что вы хотите, она не удалит парольные фразы из цепочки для ключей. Это только очистит память запущенного ssh-agent от всех расшифрованных закрытых ключей. Если в вашей конфигурации есть UseKeychain yes , ssh-agent радостью повторно расшифрует ключ в следующий раз, когда он понадобится (см. Ответ на вопрос 1 выше).

Одна альтернатива, чтобы удовлетворить ваше подразумеваемое желание не иметь дешифрованных ключей, доступных постоянно, - отключить оба UseKeychain и AddKeysToAgent , как в:

Host *
  UseKeychain no
  AddKeysToAgent no

Затем вручную добавьте ключи в работающий ssh-agent с ограниченным временем жизни, используя опцию -t <lifetime> для ssh-add , как показано в:

ssh-add -t 4h ~/.ssh/id_rsa

Это добавит ваш (по умолчанию) ключ RSA к агенту со сроком службы 4 часа. Через четыре часа ключ будет удален автоматически.

Насколько я знаю, у вашего пользователя нет директивы ~/.ssh/config определяющей время жизни по умолчанию для любого ключа, добавляемого к агенту, и в системе нет sshd_config . Однако может быть способ указать macOS запустить агент со временем жизни по умолчанию, используя опцию -t <lifetime> . Для intrepid файл plist агента запуска хранится в /System/Library/LaunchAgents/com.openssh.ssh-agent.plist .

Другой, более старый, возможно, еще актуальный подход блокирует их брелок во время сна.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .