SSH-агент теряет идентификационные данные при перезапуске машины

SSH-агент теряет идентификационные данные при перезапуске машины

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

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

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

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

Пожалуйста, помогите мне, я не очень хорошо знаком с SSH.

решение1

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

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

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

решение2

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

Просто беги ssh-add -K ~/.ssh/id_rsa.

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

решение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

Пароль будет запрашиваться только после входа в систему.

решение4

Его нужно разблокировать после каждой перезагрузки, чтобы загрузить в память. Для этого добавьте следующее в ваш ~/.bashrc:

eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa

Не называйте пару ключей id_rsaпри ее создании. Дайте ключам осмысленное имя, связанное с ресурсом, к которому вы пытаетесь получить доступ. Это может быть что угодно, в имени по умолчанию нет ничего особенного id_rsa.

Связанный контент