24

Я новичок в ключах SSH. Кто-нибудь может объяснить, как работает ssh-agent bash и ssh-add ?

Мне нужно понять его внутренности в будущем.

2 ответа2

37

Агент - это программа, которая хранит ваши ключи в памяти, поэтому вам нужно разблокировать их только один раз, а не каждый раз. ssh-agent делает это для ключей SSH.

Обычные методы запуска ssh-agent :

  • eval `ssh-agent` - запускает агент в фоновом режиме и устанавливает соответствующие переменные окружения для текущего экземпляра оболочки.

    (ssh-agent при запуске без аргументов выводит команды для интерпретации вашей оболочкой.)

  • exec ssh-agent bash - запускает новый экземпляр оболочки bash , заменяя текущий.

    (С одним или несколькими аргументами ssh-agent ничего не выводит, но запускает указанную команду: в данном случае это оболочка bash , но технически это может быть что угодно.)

    Второй метод иногда предпочтительнее, так как он автоматически убивает ssh-agent при закрытии окна терминала. (При запуске его с помощью eval агент останется запущенным, но недоступным.)

Тем не менее, это только запускает пустой агент. Чтобы на самом деле сделать его полезным, вам нужно использовать ssh-add, который разблокирует ваши ключи (обычно ~/.ssh/id_*) и загружает их в агент, делая их доступными для соединений ssh или sftp .

7

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

Отредактируйте файл ~/.bashrc и добавьте:

ssh-add &>/dev/null || eval `ssh-agent` &>/dev/null  # start ssh-agent if not present
[ $? -eq 0 ] && {                                     # ssh-agent has started
ssh-add ~/.ssh/your_private.key1 &>/dev/null        # Load key 1
ssh-add ~/.ssh/your_private.key2 &>/dev/null        # Load key 2
}

Проверьте ваши ключи с помощью ssh-add -l

Вы можете остановить текущий сеанс ssh-agent с помощью ssh-agent -k

Что нужно знать о ssh-agent и .bashrc, так это не загружать слишком много ключей. Количество попыток по умолчанию для демона ssh ограничено до 6. Это можно изменить в /etc/ssh/sshd_config со значением MaxAuthTries .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .