Как очистить записи ssh-agent (в Mac OS X)?

60

Я использую Mac OS X, и кажется, что после SSHing к нескольким машинам, используя файлы идентификации, мой 'ssh-agent' создает много идентификаторов / ключей, а затем иногда предлагает слишком много для удаленной машины, заставляя их сбросьте меня с толку перед подключением:

Получено отключение от 10.12.10.16: 2: слишком много ошибок аутентификации для cwd

Совершенно очевидно, что происходит, и эта страница рассказывает об этом более подробно:

SSH-серверы позволяют вам только пытаться аутентифицироваться определенное количество раз. Каждая неудачная попытка ввода пароля, каждая предлагаемая неудачная публикация / идентификация и т. Д. Предпринимают одну из этих попыток. Если в вашем агенте много ключей SSH, вы можете обнаружить, что сервер SSH может выгнать вас, прежде чем вы вообще сможете попытаться выполнить аутентификацию по паролю. Если это так, есть несколько различных обходных путей.

Перезагрузка очищает агент, а затем все снова работает нормально. Я также могу добавить эту строку в мой .ssh/configфайл, чтобы заставить его использовать аутентификацию по паролю:

PreferredAuthentications keyboard-interactive,password

Как бы то ни было, на странице, на которую я ссылался, я увидел примечание об удалении ключей из агента, но я не уверен, применимо ли это к Mac, так как они, похоже, очищаются после перезагрузки.

Есть ли простой способ очистить все ключи в 'ssh-agent' (то же самое, что происходит при перезагрузке)?

УХО
источник

Ответы:

98

Ваши ключи SSH не должны автоматически добавляться к агенту только потому, что вы подключились по SSH к серверу ...

Запустите ssh-add -lсписок ключей агента, ssh-add -Dчтобы очистить все ключи.

grawity
источник
Может быть, это как-то связано с конфигурацией OSX? Если я наберу, ssh-add -lя ничего не получу. Если я набираю, ssh -i ~/keyFileLocation.dsa un@remotehostя получаю всплывающее диалоговое окно OS X с просьбой ввести фразу-пароль. Я набираю его, а затем он соединяет меня. Если я отключаюсь, а затем набираю, ssh-add -lэто показывает мне личность, которую я только что использовал. После перезагрузки компьютера и ввода ssh-add -lснова пусто. ssh-add -Dотлично работал, чтобы очистить ключи без перезагрузки. Спасибо!
cwd
Четыре года спустя, и это все еще проблема, но это исправление все еще работает - спасибо
jnunn
Эй, вы можете направить меня к этому, пожалуйста? superuser.com/questions/951002/…
Никс
4
Неправильно (в 2017 году): см. AddKeysToAgentОпцию конфигурации, которая предназначена для явной цели добавления ваших ключей SSH к агенту только потому, что вы используете SSH для сервера.
Радон Росборо
1

Другой способ ограничить то, против чего проверяются ключи, - добавить IdentitiesOnly yesи IdentityFile ~/.ssh/<nameofkey>в ваш /.ssh/configфайл.

Лео Фишер
источник