10

После создания ключей с именем id_rsa в его расположении по умолчанию. Я добавляю идентичность агенту SSH с помощью команды ssh-add ~/.ssh/id_rsa , он успешно добавляется.

Я могу использовать SSH, не вводя парольную фразу ключа, так как это уже с агентом SSH.

Но когда я перезагружаю машину или сервер, а затем проверяю идентичность с помощью команды ssh-add -L я получаю сообщение, будто у The agent has no identities .

Значит ли это, что когда мы перезагружаем машину, агент теряет личность? Это нормальное поведение или что-то, чего мне здесь не хватает?

Пожалуйста, ведите меня, я не очень знаком с SSH.

3 ответа3

11

Это нормально. Цель ключевого агента - просто хранить дешифрованные ключи в памяти, но он никогда не будет записывать их на диск. (Это победит цель - почему бы просто не снять защиту с главного ключа?)

Таким образом, ключи должны быть разблокированы при каждом входе в систему, и вам нужно автоматизировать это - в Linux использование pam_ssh является одним из вариантов; он автоматически использует пароль вашей ОС для разблокировки агента. Другой аналогичный модуль - pam_envoy , который немного более надежен (но требует systemd).

Оба модуля запускают самого агента и автоматически загружают ключи.

3

Попробуйте сделать это с ~/.bashrc:

if [ ! -S ~/.ssh/id_rsa ]; then
  eval `ssh-agent`
  ln -sf "$SSH_AUTH_SOCK" ~/.ssh/id_rsa
  ssh-add
fi
export SSH_AUTH_SOCK=~/.ssh/id_rsa

Это должно запрашивать пароль только после входа в систему.

2

В OS X ssh-add имеет специальный флаг для подключения к связке ключей, если вы решили сохранить там свой закрытый ключ.

Просто запустите ssh-add -K ~/.ssh/id_rsa .

Я считаю, что это отвечает на ваш вопрос более полно. Этот специфический для OS X флаг трудно найти документацию, но он работает по крайней мере с OS X Leopard.

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