Как не вводить ssh-add каждый раз

11

Я прочитал и проследил некоторую онлайн-документацию о том, как настроить 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
ssgao
источник
Вы имеете в виду, что вам нужно вводить вашу фразу-пароль каждый раз, когда вы входите в систему, или каждый раз, когда вы открываете окно оболочки? Вы говорите, что следовали некоторой онлайн-документации, но ssh-agent работает из коробки на Ubuntu, поэтому вам не нужно было ничего делать. Что ты сделал точно?
Жиль "ТАК - перестань быть злым"
Я должен вводить фразу-пароль каждый раз, когда я ssh на удаленной машине. НО это не пароль для доступа к удаленной машине, это пароль, чтобы разблокировать мой закрытый ключ (id_rsa).
ssgao
Я знаю, что это пароль вашего ключа. Я спрашиваю, что вы сделали, чтобы настроить ssh-agent, и ssh-addимеет ли запуск эффект, который длится дольше, чем окно оболочки, в которое вы его набрали.
Жиль "ТАК - перестать быть злым"
Эффект длится до тех пор, пока я не выйду из системы (локально). Я положил то, что я сделал с ssh-agentпостом.
ssgao
Это звучит как нормальное поведение: вам нужно вводить парольную фразу один раз за сеанс, чтобы разблокировать ключ. Если бы разблокированный ключ где-то хранился, это лишило бы смысла использование ключевой фразы для ключа - любой, кто получил сохраненный разблокированный ключ, мог бы его использовать. Вы ожидали чего-то еще? Вы хотите, чтобы ключ сохранялся в памяти после выхода из системы, чтобы он был доступен до следующей перезагрузки?
Жиль "ТАК - перестань быть злым"

Ответы:

6

Я установил брелок.

sudo apt-get установить брелок

Если вы используете 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 ###

В начале рабочего дня я войду в систему. Когда я открываю терминал, мне будет предложено ввести пароль. Для всех других новых терминалов и соединений мне больше не придется запрашивать мою фразу-пароль.

walpha
источник
4
чем это отличается от набора текста ssh-addв терминале?
ssgao
да, но тогда вам придется вводить ssh-add каждый раз ... делая это, вы исключите ваши 2 шага -> eval "$ (ssh-agent)" и ssh-add
abhishek
1

То, что вы ищете, менее безопасно, но это может быть выполнено с использованием аутентификации с открытым ключом без использования 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/

Omegamormegil
источник
0

Некоторое время назад у меня внезапно начали спрашивать пароль, чтобы разблокировать мой ключ ssh при выполнении git push. Оказалось, что для того, чтобы перестать запрашивать парольную фразу, достаточно было добавить агент ключа SSH (GNOME Keyring: агент SSH) в автозагрузку приложений (в моем случае - просто поставить галочку):

введите описание изображения здесь

Алексей
источник
Не могли бы вы расширить свой ответ более подробно о том, как это сделать и почему это решило бы данную проблему? Благодарю.
Byte Commander