macOS 10.12 Sierra не забудет мою ключевую фразу ssh

25

После создания нового зашифрованного id-rsaключевого файла ssh-keygenи его использования в первый раз я не могу заставить macOS забыть пароль. Это похоже на то, как заставить OS X не помнить вопрос о ключевой фразе ssh, но хуже.

Я попытался перезагрузить, убить ssh-agent, заблокировать все мои цепочки для ключей, но он все еще где-то хранится. Однако я не могу найти его ни в одной цепочке для ключей. Это кажется очень небезопасным. Ответы на пароль закрытого ключа SSH, никогда не удаляемые с помощью Keychain / ssh-agent, также не помогают.

На самом деле диалоговое окно, которое раньше отображало вопрос о том, хотите ли вы сохранить фразу-пароль или нет, похоже, больше не существует.

hogliux
источник
Вы проверяли, действительно ли он вообще зашифрован?
Джон Китс
Да. Я уверен, что ssh действительно запрашивает фразу-пароль при первом использовании. Может кто-то на самом деле воспроизвести это?
Hogliux
Ну, с моей настройкой это тоже работает, так настроен ssh / ssh-agent.
Джон Китс
Это верно, если вы установите флажок, чтобы сообщить macOS о сохранении ключевой фразы в цепочке для ключей. Однако, если вы не установите этот флажок, macOS всегда должна запрашивать фразу-пароль. Но даже если вы щелкнули по нему, вы всегда сможете удалить его снова в утилите цепочки для ключей. Начиная с Sierra, диалоговое окно больше не появляется, и в утилите связки ключей нет записи.
Hogliux
Это диалоговое окно, о котором я говорю, которого, похоже, больше не существует: dribin.org/dave/resources/pictures/ssh_leopard_dialog.png
hogliux,

Ответы:

27

Чтобы отключить хранение ключевой фразы в цепочке для ключей, вы должны добавить следующие строки в файл ~ / .ssh / config :

Host *
UseKeyChain no

Если у вас уже есть парольная фраза, хранящаяся в цепочке для ключей, вы можете удалить ее с помощью команд:

cd ~/Library/Keychains/<UUID>/
sqlite3 keychain-2.db 'delete from genp where agrp="com.apple.ssh.passphrases"'

Если вы хотите вести себя как в OS X El Capitan или более ранней версии (т.е. пароль хранится до выхода из системы или перезапуска), просто добавьте в ~ / .ssh / config:

AddKeysToAgent yes

Вам не нужно запускать ssh-agent.

mbamac
источник
1
Этот ответ навсегда решает проблему! Поэтому я отметил это как правильный ответ. Спасибо!
Hogliux
предложил изменить: изменить , Library/Keychains/<UUID>/чтобы ~/Library/Keychains/<UUID>/для ясности :)
Mohamed Хафез
Предложенное редактирование принято :)
mbamac
20

Благодаря Клайву я лучше понимаю эту новую «функцию». Когда вы вводите парольную фразу, Sierra добавляет ее в цепочку ключей, но не в ssh-agent. Если ваша личность отсутствует в ssh-agent, с ней невозможно справиться ssh-add. Чтобы управлять (т. Е. Удалять) свою личность из цепочки для ключей, вам необходимо добавить свою личность ssh-agent, используя ssh-add. После того, как вы добавили свою личность к ssh-agentвам, вы можете использовать ее ssh-add -K -dдля удаления из обоих ssh-agentи брелка. Если вы хотите, чтобы ваша личность добавлялась в ssh-agent каждый раз, когда вы используете ssh add:

AddKeysToAgent yes

к вашему .ssh/config. Это гарантирует, что ssh-agentвсегда будет ваша личность.

Джин Френклер
источник
Просто продолжение. Если вы добавите «UseKeyChain no» в ваш файл .ssh / config, это не позволит Keychain добавить вашу фразу-пароль. Вы хотите оставить «AddKeysToAgent yes» в ssh-agent, сохраните вашу парольную фразу до перезагрузки или использования ssh-add -d.
Джин Френклер,
Обратите внимание, что это требует использования OpenSSH, поставляемого Apple. Этот патч не включен в домашний напитокhomebrew/dupes/openssh: stable 7.3p1
Райан Гиббонс
3
ssh-add -K -d

Это может удалить парольные фразы, ранее сохраненные в цепочке для ключей. Начиная с macOS 10.12 Sierra, чтобы избежать повторного хранения ключевой фразы в цепочке для ключей, обязательно сделайте это ssh-addсначала.

Клайв Лин
источник
Да. Раньше это работало на предыдущих версиях macOS Sierra. Но больше не работает. macOS Sierra до сих пор помнит парольную фразу.
Hogliux
1
ХОРОШО. Больше расследования. Он забывает об этом один раз, но сразу же возвращается в цепочку для ключей после использования в любом месте (ssh, scp, git и т. Д.). Какой-то незнакомец отправил мне электронное письмо и обнаружил, что, похоже, пароль хранится в ~ / Library / Keychains / <SOME-UUID> /keychain-2.db. Но даже при блокировке моей цепочки для ключей входа в систему (и всех других цепочек для ключей) os x не будет запрашивать мой пароль цепочки для ключей при доступе к ключевой фразе. Это действительно не кажется правильным.
hogliux
Действительно, похоже, что в Сьерре пароль хранится в этом месте цепочки для ключей, а не в обычной цепочке для ключей входа в систему.
m1keil