ssh-agent это программа хранящая приватные ключи, используемые для публичной аутентификации (RSA, DSA). Идея ssh-agent состоит в том, что он запускается в начале Х-сессии или при входе в систему, и все другие окна или программы запускаются как клиенты программы ssh-agent. Посредством переменных окружения агент может быть найден и автоматически использован для аутентификации при подключении к другим машинам с использованием ssh(1).
Используемые опции:
-abind_address
Прикрепляет агента к доменному подключению unix bind_address. По умолчанию это /tmp/ssh-XXXXXXXX/agent.<ppid>.
-c
Генерирует команды оболочки С на стандартный вывод. Это поведение по умолчанию, если как SHELL используется csh-подобная оболочка.
-s
Генерирует на стандартный вывод команды оболочки Bourne. Это поведение по умолчанию, если как SHELL используется не csh-подобная оболочка.
-k
Уничтожить текущего агента (указывается для переменной окружения SSH_AGENT_PID).
-tlife
Устанавливает максимальный срок действия для добавленного в агента идентификатора. Срок действия может быть указан в секундах или в виде, описанном в sshd(8). Срок действия указанный при помощи ssh-add(1), перепишет данное значение. Без указания этой опции максимальный срок действия идентификации - бесконечность.
-u
Запустить агента в режиме исключительности.
-d
Режим отладки. При указании этой опции ssh-agent не перейдёт в фоновый режим выполнения.
Если команда задана в строке, то она будет выполнена как субпроцесс агента. Если выполнение команды внезапно прервётся, агент тоже завершит свою работу.
При инициализации агент не имеет ни одного приватного ключа. Ключи добавляются при помощи ssh-add(1).
Если агент запущен без параметров, то ssh-add(1) добавит файлы $HOME/.ssh/id_rsa, $HOME/.ssh/id_dsa и $HOME/.ssh/identity. Если идентификация содержит ключевую фразу, то ssh-add(1) запросит эту ключевую фразу (используя маленькую программу Х11, будучи запущенным из-под Х11, или из терминала, если запущено без Х). Затем эта идентификация отправляется агенту. Некоторые идентификации могут быть сохранены в агенте; агент может автоматически использовать любую из них.
ssh-add -l отображает идентификации, обслуживаемые агентом в данный момент.
Идея состоит в том, что агент запущен на локальном компьютере пользователя, лаптопе или терминале. Отсутствует необходимость в хранении данных аутентификации на другой машине, и ключевые фразы аутентификации не передаются по сети. Однако, подключение к агенту пересылается через удаленные входы SSH в систему и пользователь может использовать привилегии данные идентификацией безопасным способом в любом месте сети.
Имеется два основных пути установки агента:
либо вы позволите агенту начать выполнение новой под-команды, в которую экспортируются некоторые переменные окружения, либо вы позволите агенту напечатать необходимые команды оболочки (будет создан синтаксис либо sh(1), либо csh(1)), которые могут быть перенесены в вызывающую оболочку. Позже ssh(1) проверяет наличие этих переменных и использует их для установления связи с агентом.
Агент никогда не передаст приватный ключ через свой канал запроса. Вместо этого, операции, требующие приватный ключ, будут осуществлены агентом и требуемый результат возвращен запрашивающему. Таким образом, приватные ключи не раскрываются клиенту, использующему агента.
Создаются доменные подключения unix, и имена этих подключений сохраняются в переменной окружения SSH_AUTH_SOCK. Подключение делается доступным только для текущего пользователя. Этот метод может быть неправильно использован суперпользователем (root) или другой сессией этого-же пользователя.
Переменная окружения SSH_AGENT_PID хранит идентификатор процесса (ID) агента.
Агент автоматически прекращает работу, когда команда, указанная в командной строке, завершена.
ФАЙЛЫ
$HOME/.ssh/identity
Содержит RSA-идентификатор аутентификации пользователя для протокола версии 1.
$HOME/.ssh/id_dsa
Содержит DSA-идентификатор аутентификации пользователя для протокола версии 2.
$HOME/.ssh/id_rsa
Содержит RSA-идентификатор аутентификации пользователя для протокола версии 2.
/tmp/ssh-XXXXXXXX/agent.<pid>
~/.ssh/agent
Доменное подключение unix, используемое для поддержания связи с аутентификационным агентом. Это подключение должно быть доступно для чтения только владельцу. При завершении агентом работы подключение будет удалено автоматически.
АВТОРЫ
OpenSSH является производной из оригинальной и свободной версии ssh 1.2.12 от Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt и Dug Song удалили много ошибок, добавили обновленные возможности и создали OpenSSH. Markus Friedl внес вклад в виде поддержки для протокола SSH версий 1.5 и 2.0.