Я прочитал и следил за некоторыми онлайн-документами о том, как настроить ssh-agent , чтобы мне не приходилось вводить пароль каждый раз, когда я ssh подключался к удаленной машине.
Однако, с помощью ssh-agent , мне все еще нужно делать ssh-add
каждый раз, когда я перезагружаю оболочку. Затем ssh-add
просит меня ввести ключевую фразу, чтобы разблокировать закрытый ключ.
Enter passphrase for key '/home/xx/.ssh/id_rsa':
Вместо того, чтобы вводить пароль для удаленного компьютера, меня просят ввести пароль для закрытого ключа. Это как выйти из чистилища и потом оказаться в аду. Похоже, что id_rsa только временно добавляется в ssh-agent в сеансе , потому что каждый раз, когда я вхожу в систему и печатаю ssh-add -l
. Я получаю:
The agent has no identities.
Могу ли я спросить, как постоянно хранить ключ (id_rsa) в ssh-agent? Спасибо
РЕДАКТИРОВАТЬ: это то, что я сделал с ssh-agent
. Я добавил следующий блок в ~/.bash_profile
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Я установил брелок.
sudo apt-get install keychain
Если вы используете bash, вам нужно добавить несколько команд в ваш .bash_profile. Если у вас нет .bash_profile, создайте его в своей домашней папке. Добавьте эти строки:
### START-Keychain ###
# Let re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###
В начале рабочего дня я войду в систему. Когда я открываю терминал, мне будет предложено ввести пароль. Для всех других новых терминалов и соединений меня не будут спрашивать о моей парольной фразе.
То, что вы ищете, менее безопасно, но это может быть выполнено с использованием аутентификации с открытым ключом без использования ssh-agent. Более безопасный вариант - использовать аутентификацию с открытым ключом с парольной фразой при отключении аутентификации по паролю на сервере ssh, но это не то, что вы просили. Смотрите ссылку внизу этого ответа для получения инструкций, если вы решите сделать это вместо этого.
Чтобы использовать ssh без запроса какой-либо парольной фразы, вам нужно сгенерировать пару ключей, оставив поле пароля незаполненным.
Чтобы убедиться, что вы уже сгенерировали пару ключей, проверьте файлы id_rsa и id_rsa.pub в каталоге ~ / .ssh. Если они уже есть, вы можете удалить их или переместить, чтобы создать новую пару ключей.
Обратите внимание: если вы удалите их, вы потеряете доступ к любым ssh-серверам, которые вы используете, а затем к старым ключам для аутентификации, если на сервере отключена аутентификация по паролю.
Чтобы создать новую пару ключей, выполните следующую команду:
ssh-keygen -t rsa
Примите расположение ключей по умолчанию и оставьте парольную фразу пустой.
Чтобы передать свой открытый ключ серверу ssh, к которому вы хотите подключиться, используйте следующую команду:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost
После выполнения этих шагов вы сможете войти на удаленный сервер без пароль от компьютера, который вы используете.
Ссылка: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/
Некоторое время назад у меня внезапно начали спрашивать пароль для разблокировки моего ключа ssh при выполнении git push
. Оказалось, что для того, чтобы перестать запрашивать парольную фразу, достаточно было добавить ключевой агент SSH (GNOME Keyring: SSH Agent) в автозагрузку приложений (в моем случае - просто чтобы поставить галочку):