Я прочитал официальное определение:
ssh-agent - это программа для хранения закрытых ключей, используемая для аутентификации с открытым ключом (RSA, DSA, ECDSA). Идея состоит в том, что ssh-agent запускается в начале сеанса X или сеанса входа в систему, а все другие окна или программы запускаются как клиенты для программы ssh-agent. Благодаря использованию переменных среды агент может быть найден и автоматически использован для аутентификации при входе на другие машины с использованием ssh (1).
«... программа для хранения закрытых ключей ..» - ИМХО - ключи ssh генерируются пользователем с помощью команды ssh-keygen и просто и просто хранятся в ~ / .ssh - зачем мне нужен демон для хранения этих ключей? Как именно они их хранят? Разве они не хранятся в .ssh?
«запускаются как клиенты к программе ssh-agent» - не понимаю. Где это нужно? Я обычно просто использую ssh как это:
ssh -i ~/.ssh/private_key_name username@hostname
Что именно означает «клиенты» - какие клиенты? Разве вы не просто запускаете команду ssh из терминала для подключения - какие есть другие клиенты и почему они не могут просто использовать путь к этому приватному файлу ssh, как команда ssh?
~/.ssh/config
«sIdentityFile
вариант хорош для, с или без агента~/.ssh/config
какой ключ использовать для какого удаленного хоста, чтобы он точно знал, какой из них ему нужен.ssh-agent
этом нет необходимости, если закрытый ключ не защищен парольной фразой?Преимущество
ssh-agent
заключается в том, что вам нужно ввести пароль только один раз. Если ваш закрытый ключ RSA не зашифрован парольной фразой, тогда ssh-agent не требуется. Командаssh
будет примером клиента.источник
Если вы регулярно
ssh
ИНГ в различных машинах, каждый со своим собственным ключом и ключевую фразу, а затем работаетssh-agent
позволяет ввести ключевую фразу для каждого ключа один раз 1 в начале сеанса , а затем вы можете проверить подлинность каждой машине столько раз , как вам нравится без необходимости повторного ввода вашей парольной фразы.Еще одним преимуществом является то, что, согласно
man
странице, агент никогда не отправляет закрытый ключ по своему каналу запроса; поэтому, если вы переключаетесь между разными окнами, ваши закрытые ключи защищены.1 Вы можете установить
life
время удержания клавиш в агенте.источник
Статья в Википедии, вероятно, имеет лучшее описание:
Опять дословно из статьи в википедии:
Обычно он помещается в системные или пользовательские rc-файлы, такие как
$HOME/.bashrc
или$HOME/.profile
(для оболочек bash), так чтоssh-agent
набор переменных среды полностью включается в вашу среду.В моей системе Fedora 14 она запускается довольно рано как часть подсистемы X11. В этом файле
/etc/X11/xinit/xinitrc-common
:Затем переменная
$SSH_AGENT
используется в других сценариях запуска X11, таких как здесь/etc/X11/xinit/Xclients
:При включении этого здесь следующие переменные среды устанавливаются как часть родительской оболочки, поэтому они должны быть у всех разветвленных потомков, например:
Это немного сложнее, но в двух словах, это в основном то, что происходит
ssh-agent
.Например, в GNOME
ssh-agent
фактически запускается для каждого пользователя в качестве запускаемого приложения:TL; DR
Суть в том,
ssh-agent
что когда вам нужны ssh-ключи, вам нужно всего лишь один раз разблокировать их парольной фразой (при условии, что она есть), и с тех пор они доступны в расшифрованном виде в памяти (RAM).источник
«запускаются как клиенты для программы ssh-agent» относится к идее, что ssh-agent запускается во время (локальной) инициализации сеанса входа в систему, так что все программы получают переменные среды
$SSH_AGENT_PID
и$SSH_AUTH_SOCK
которые необходимы для подключения агента.Еще одним преимуществом обработки закрытого ключа из ssh является то, что ssh-agent может быть заменен gpg-agent. Таким образом, вы можете использовать ключи OpenPGP (с возможностью аутентификации) для SSH. Это хорошее решение для ключей OpenPGP на смарт-карте.
источник