3

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 ответа3

2

Вы не должны использовать аргумент '-i keyfile', если в вашем агенте присутствует личность.

Попробуй это:

ssh-add keyfile
ssh -v user@host

(V поможет вам отладить)

0

Оказывается, проблема была в том, что у меня было слишком много идентификаторов в моем агенте. Обычно ssh игнорирует опцию -i только у него есть идентификаторы в агенте, и просто по очереди использует идентификаторы в агенте. Если у вас больше, скажем, 5, серверы отклонят их все, а затем вернутся к использованию паролей, потому что было слишком много неудачных попыток.

Установка identitiesonly на host * заставляет ssh перейти с помощью опции -i (или identityfile файла в .ssh/config снова, но все равно будет искать в агенте, если указанный идентификатор уже разблокирован, так что это исправило эту проблему под любым углом).

0

Следите за блогом Дэйва Дрибина (ssh-agent в Mac OS X 10.5 (Leopard)

Вы должны выполнить следующую команду:

ssh-add -k /path/to/your/private/key

После этого вы проверяете свои настройки через:

sh-add -L

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