После создания ключей с именем 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
.