Проблема с ssh-agent и / или Mac брелок на Mac
tl;dr: у меня есть идентификаторы в ssh-agent. Все, кроме одного, привыкают; каждый добавляется к агенту и цепочке для ключей, когда я его использую, но затем мне снова и снова предлагается ввести ключевую фразу, как если бы ключа не было в агенте (а если нет, как если бы агент не мог получить пароль из цепочки для ключей).
Подробности:
У меня есть набор ключей SSH (RSA, протокол 2), для которых я использую агент и храню парольные фразы в цепочке для ключей.
Для одного (и только одного) из этих ключей и только недавно SSH начал игнорировать идентификационные данные в агенте. То есть:
- Подключаю с помощью ключа (
ssh -i keyfile user@host
,IdentitiesOnly
верно дляHost *
) - OS X запрашивает пароль; Я установил флажок сохранить в связке ключей.
- идентификатор неявно добавляется к агенту, добавляется запись цепочки для ключей
- Я закрываю связь
- Я воссоединяюсь
- Меня снова спрашивают о парольной фразе, как будто записи агента и / или цепочки для ключей не существует
Я проверил, что: - Запись цепочки для ключей установлена на "всегда разрешать" для ssh, ssh-add и ssh-agent. - Файл ключей имеет правильные права доступа. - Идентификация загружена в агент. - Логин работает с этим идентификатором, при условии, что я набираю пароль каждый раз.
Что я пробовал:
- Удалив всю запись цепочки для ключей, затем снова запустил ssh. Мне предложили ввести фразу-пароль, ввести ее, добавить запись в цепочку для ключей и личность в агенте; связь сработала, в следующий раз снова спросили.
- Переименование самого файла ключа. Создается новая запись цепочки для ключей, соединение работает, но при следующем соединении меня снова спрашивают о парольной фразе.
- Я бегал
ssh-add -D
с последующимssh-add -k
, Я проверил, что нарушающий ключ находится среди добавленных идентификаторов; поэтому, в принципе, связь между агентом и цепочкой для ключей, кажется, работает. Все еще спрашивает снова.
Это не происходит ни с одним из моих других ключей, и сам ключ работает для SSH. Это также очень раздражает, поскольку я использую достаточно сильные парольные фразы для ключей.
3 ответа
Оказывается, проблема была в том, что у меня было слишком много идентификаторов в моем агенте. Обычно ssh игнорирует -i
вариант, когда он имеет идентификаторы в агенте и просто использовать идентификаторы в агенте по очереди. Если у вас больше, скажем, 5, серверы отклонят их все, а затем вернутся к использованию паролей, потому что было слишком много неудачных попыток.
настройка identitiesonly
в host *
заставляет SSH пройти -i
вариант (или identityfile
в .ssh/config
снова, но все равно будет искать в агенте, если указанная идентификационная информация уже разблокирована, так что это исправило эту проблему под любым углом.
Вы не должны использовать аргумент '-i keyfile', если в вашем агенте присутствует идентификатор.
Попробуй это:
ssh-add keyfile
ssh -v user@host
(V поможет вам отладить)
Следите за блогом Дэйва Дрибина ( ssh-agent в Mac OS X 10.5 (Leopard)
Вы должны выполнить следующую команду:
ssh-add -k /path/to/your/private/key
После этого вы проверяете свои настройки через:
sh-add -L