Збережіть ідентичності, додані ssh-add, щоб вони зберігалися


19

Я нещодавно налаштував, opensshщоб я міг ним користуватися git.

У процесі її налаштування (відповідно до цієї статті ) я запустив команди:

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

Через деякий час, після того як я вийшов із системи та знову спробував користуватися, git pushя отримав помилку. Рішення цієї помилки було повторним запуском тих самих команд.

Скажіть, будь ласка, як я можу

  • Продовжуйте ssh-agentпрацювати, щоб мені не довелося починати нове
  • Запам’ятайте ключі, які я додав, тому мені не потрібно їх додавати кожен раз

Для уточнення я використовую zsh, тому певні функції bash не працюватимуть у моєму .zshrc.


Ви повинні почати з розуміння того, що таке, ssh-agentі як це працює, перш ніж спробувати підходити під ваш випадок використання.
Jakuje

Яку помилку ви отримали?
Jakuje

@Jakuje Помилка полягала у відсутності віконця і запитала "Ви запустили ssh-агент?".
тимотрей

Відповіді:


22

Для чого 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

Якщо агент працює та sshпідтримує цю опцію, то так.
Jakuje

Чи можете ви уточнити, як би я автоматизував старт ssh-agentтоді?
тимотрей

В основному, як пояснено в іншій відповіді. [ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent)
Jakuje

Це працює з zsh?
тимотрей

5

Додайте це до ~/.bashrc

Це означає, що ssh-агент буде запущений автоматично, коли ви відкриєте інший сеанс, не свій термінал

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
fi

якщо вам потрібен ключ, який потрібно додати до агента, також додайте цей

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
 ssh-add ~/.ssh/<your private ssh key>
fi

1
Це була гарна відповідь, але не пояснює, що робить команда.
тимотрей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.