Сохранение идентификаторов, добавленных ssh-add, чтобы они сохранялись

3952
timotree

Я недавно настроил, opensshчтобы я мог использовать его с git.

В процессе настройки (согласно этой статье ) я запустил команды:

$ eval "$(ssh-agent -s)" $ ssh-add ~/.ssh/<name of key> 

Некоторое время спустя, после того, как я вышел из системы и вернулся, я попытался использовать, git pushя получил ошибку. Решением этой ошибки было выполнение тех же команд снова.

Пожалуйста, скажите мне, как я могу

  • Продолжайте ssh-agentработать, чтобы мне не пришлось начинать новый
  • Помните ключи, которые я добавил, чтобы мне не приходилось добавлять их каждый раз

Просто для пояснения, я использую zsh, поэтому некоторые функции bash не будут работать в моем .zshrc.

8
Вы должны начать с понимания, для чего нужен `ssh-agent` и как он работает, прежде чем пытаться приспособить его к вашему витому варианту использования. Jakuje 7 лет назад 0
Какую ошибку вы получили? Jakuje 7 лет назад 0
@Jakuje Ошибка была о пропавшем pubkey и спросила: «Вы запустили ssh-agent?». timotree 7 лет назад 0

2 ответа на вопрос

11
Jakuje

Для чего ssh-agentи как это работает?

ssh-agentСохраняет свои расшифрованные ключи надежно в памяти и в сеансе. Не существует разумного и безопасного способа сохранить расшифрованные ключи при перезагрузке / повторном входе в систему.

Хорошо, как я могу автоматизировать это?

Автоматизировать ssh-agentзапуск

добавлять

[ -z "$SSH_AUTH_SOCK" ] && eval "$(ssh-agent -s)" 

к вашему ~/.bashrcили другому сценарию запуска ( ~/.zshrc).

Автоматизировать добавление ключей

Ключи могут быть автоматически добавлены при первом использовании, когда вы добавляете

AddKeysToAgent yes 

к вашему ~/.ssh/config.

Для получения дополнительной информации ~/.ssh/configсм man ssh_config.

Итак, вы говорите, что если я включу AddKeysToAgent, то всякий раз, когда я буду набирать `eval" $ (ssh-agent -s) "`, он будет добавлять мой ключ? timotree 7 лет назад 0
Если агент работает и ваш `ssh` поддерживает эту опцию, тогда да. Jakuje 7 лет назад 0
Не могли бы вы уточнить, как я могу автоматизировать запуск `ssh-agent`? timotree 7 лет назад 0
В основном, как объяснено в другом ответе. `[-z" $ SSH_AUTH_SOCK "] && eval $ (ssh-agent)` Jakuje 7 лет назад 0
Это работает с Zsh? timotree 7 лет назад 0
Да, но в этом случае это не `~ / .bashrc`, а` ~ / .zshrc` или подобный файл. Jakuje 7 лет назад 0
Давайте [продолжим это обсуждение в чате] (http://chat.stackexchange.com/rooms/49566/discussion-between-timotree-and-jakuje). timotree 7 лет назад 0
3
Savitoj Singh

Добавьте это к ~/.bashrc

if [ -z "$SSH_AUTH_SOCK" ] ; then eval `ssh-agent -s` ssh-add fi 
Это был хороший ответ, но он не объясняет, что делает команда. timotree 7 лет назад 1

Похожие вопросы