20100219

ssh-agent

перепост с ufo.

из man ssh-agent:
The idea is that ssh-agent is started in the beginning of
an X-session or a login session, and all other windows or programs are started as clients to the ssh-agent program.
скорее всего у вас он уже запущен. см. вывод ps ax | grep ssh-agent. у меня, например:
$ ps ax | grep ssh-agent
4943 ? Ss 0:00 /usr/bin/ssh-agent
/usr/bin/dbus-launch --exit-with-session x-session-manager
т.е. запущен агент поверх dbus-launch, который, в свою очередь, запускает используемый мною x-session-manager (у меня это icewm-session).
поверх всего агент запускается для того, чтобы передать всем потомкам переменную окружения с адресом сокета, через который агент и коммуницирует со всякими ssh*-программами:
$ env | grep SSH_AUTH
SSH_AUTH_SOCK=/tmp/ssh-XuDwYF4914/agent.4914
ключи _текущему_ экземпляру агента можно добавить командой
$ ssh-add [<файл с ключом, например, ~/.ssh/id_rsa>]
если ключ защищён пассфразой, ssh-add её запросит.
чтобы агент забыл обо всех ключах, нужно сказать:
$ ssh-add -D
о конкретном ключе:
$ ssh-add -d <файл с ключём>

по поводу security:
1. как написано в man ssh-agent, ключи напрямую ssh-клиентам агент не передаёт. т.е., как я понимаю, «разговаривает» с sshd сам агент.
2. идея агента состоит в том, чтобы rsa/dsa-ключи были защищены пассфразой (кстати, добавить/изменить пассфразу к существующему ключу можно командой ssh-keygen -p [-f <файл с ключом>]) и вам не нужно было вводить пассфразу при каждом вызове ssh. а если даже злоумышленник завладеет файлом с ключом, пассфразу ему придётся подбирать долгими зимними вечерами.
3. да, root может добраться до сокета (файл читабелен только для вас, но для root-а это не проблема) и «прикинуться своим»:
# export SSH_AUTH_SOCK=/tmp/ssh-XuDwYF4914/agent.4914
# ssh al@linuxforum.ru
???
profit
на то он и root.
4. у ssh-agent (и у ssh-add) есть ключик -t <секунды или time-format, описанный в sshd_config(5)>. задаёт он максимальное «время жизни» ключа, добавленного агенту.

отсюда вывод — варианты использования ключей по мере возрастания секурности:
1. ключ без пассфразы
2. ключ с пассфразой, добавленный в ssh-agent
3. ключ с пассфразой
выбирать нужный баланс между степенями удобства и безопасности придётся вам самим.

Комментариев нет: