какова цель ssh-агента?

Можно попробовать http://www.slitaz.org и просто получить virtualbox пакет, который должен идти со всеми его зависимостями.

74
16.04.2013, 01:39
5 ответов

Подписание дескрипторов агента SSH данных аутентификации для Вас. При аутентификации к серверу Вы обязаны подписывать некоторые данные с помощью закрытого ключа, доказывать, что Вы - ну, в общем, Вы.

Как меры безопасности, большинство людей разумно защищает свои закрытые ключи с паролем, таким образом, любая попытка аутентификации потребовала бы, чтобы Вы ввели этот пароль. Это может быть нежелательным, таким образом, ssh-агент кэширует ключ для Вас, и только необходимо ввести пароль однажды, когда агент хочет дешифровать его (и часто даже, что, поскольку ssh-агент может быть интегрирован с pam, который много дистрибутивов делают).

Агент SSH никогда не вручает эти ключи к клиентским программам, но просто представляет сокет, по которому клиенты могут отправить ему данные и по которому он отвечает данными со знаком. Дополнительная льгота этого - то, что можно использовать закрытый ключ даже с программами, которые Вы не делаете полностью доверительный.

Другое преимущество агента SSH - то, что он может быть передан по SSH. Таким образом, когда Вы ssh для хостинга A, при передаче агента, Вы можете затем ssh от до другого хоста B, не нуждаясь в Вашем существующем ключе (даже в зашифрованном виде) на хосте A.

80
27.01.2020, 19:31
  • 1
    я чувствую это, является самым полным ответом, но существует все еще одно отсутствие точки. Используя ключевой агент также позволяет использовать несколько ключей легко. Вместо того, чтобы иметь необходимость указать путь к ключу, при использовании ключевого агента ssh попробует каждый ключ в нем. –  Patrick 16.04.2013, 02:27
  • 2
    @Patrick, который может также быть, это - недостаток - пробуют слишком много недопустимых ключей на сервере, и это закроет соединение, прежде чем Вы добрались до допустимого ключа. Конечно, это что ~/.ssh/config IdentityFile вариант хорош для, с или без агента –  Tobias Kienzler 16.04.2013, 14:26
  • 3
    @Patrick, который кажется одинаково возможным без агента –  Andrey Fedorov 02.05.2017, 23:03
  • 4
    @AndreyFedorov Да, у Вас может быть несколько ключей без агента, но можно также указать в Вашем ~/.ssh/config который ключ использовать, для который удаленный хост, так, чтобы это знало точно, в каком он нуждается. –  Patrick 03.05.2017, 01:04
  • 5
    , таким образом, можно принять это ssh-agent не необходимо, если закрытый ключ не защищен паролем? –  pkaramol 17.10.2017, 17:30

Преимущество для ssh-agent это, только необходимо ввести пароль однажды. Если Ваш секретный ключ RSA не шифруется с паролем, то ssh-агент не необходим. ssh команда была бы примером клиента.

16
27.01.2020, 19:31

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

Дальнейшее преимущество - это, согласно man страница, агент никогда не отправляет закрытый ключ по своему каналу запроса; таким образом, если Вы скачкообразно двигаетесь между различными полями, Ваши закрытые ключи защищены.

1You может установить life время, когда клавиши удерживаются в агенте.

7
27.01.2020, 19:31

Статья Wikipedia, вероятно, имеет лучшее описание:

Проверка к серверу основана на аутентификации типа "запрос-ответ". ssh соединяется с сервером с именем пользователя и запросом на ключ. ssh демон получает запрос и передает проблему обратно на основе открытого ключа, сохраненного в файле аутентификации. ssh использует закрытый ключ для построения ключевого ответа и отправляет его в ожидание sshd на другом конце соединения. Это не отправляет сам закрытый ключ. ssh демон проверяет ключевой ответ, и, если допустимый, предоставляет доступ к системе. ssh-агент упрощает это путем создания сокета, который прислушивается к соединениям SSH. Пользователь просто запускает ssh-агент, говоря это, как найти их ключи (если они не находятся в месте по умолчанию), вводит пароль для каждого ключа, который будет использоваться на одноразовой основе, и затем ssh-агент обрабатывает остальных каждый раз пользовательские подключения к удаленному серверу.

Снова дословно от статьи Википедии:

... ssh-агент создает сокет и затем проверяет соединения от ssh. У всех, кто может соединиться с этим сокетом также, есть доступ к ssh-агенту. Полномочия установлены как в обычной системе Linux или Unix. Когда агент запускается, он создает новый каталог в/tmp со строгими полномочиями. Сокет расположен в папке.

Это обычно помещается или в систему или в емкостно-резистивные файлы пользователя такой как $HOME/.bashrc или $HOME/.profile (для оболочек удара) так, чтобы переменные среды ssh-agent набор включен в Вашу среду полностью.

В моей системе Fedora 14 это запускает довольно рано как часть подсистемы X11. В этом файле, /etc/X11/xinit/xinitrc-common:

# Prefix launch of session with ssh-agent if available and not already running.
SSH_AGENT=
if [ -z "$SSH_AGENT_PID" ] && [ -x /usr/bin/ssh-agent ]; then
    if [ "x$TMPDIR" != "x" ]; then
        SSH_AGENT="/usr/bin/ssh-agent /bin/env TMPDIR=$TMPDIR"
    else
        SSH_AGENT="/usr/bin/ssh-agent"
  fi
fi

Переменная $SSH_AGENT затем используется в других сценариях запуска X11 такой как здесь, /etc/X11/xinit/Xclients:

exec -l $SHELL -c "$SSH_AGENT $XCLIENTS_D/Xclients.$1.sh"

Путем слияния его в здесь, следующие переменные среды становятся установленными как часть родительской оболочки, поэтому у всех разветвленных детей должны также быть они, например:

SSH_AUTH_SOCK=/tmp/ssh-PspRF18958/agent.18958; export SSH_AUTH_SOCK;
SSH_AGENT_PID=18959; export SSH_AGENT_PID;

Существует немного больше сложности к этому, но вкратце это в основном, что продолжает ssh-agent.

Например, в GNOME, ssh-agent на самом деле запуск на пользователя как приложение запуска:

                     ss of startup apps

TL; DR

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

6
27.01.2020, 19:31

"запускаются как клиенты к программе ssh-агента", относится к идее, что ssh-агент запускается во время (локальной) инициализации сессии входа в систему так, чтобы все программы получили переменные среды $SSH_AGENT_PID и $SSH_AUTH_SOCK которые необходимы для соединения агента.

Другое преимущество вынимания обработки закрытого ключа из ssh состоит в том, что ssh-агент может быть заменен gpg-агентом. Таким образом можно использовать ключи OpenPGP (с возможностью аутентификации) для SSH. Это - хорошее решение для OpenPGP, включает смарт-карту.

1
27.01.2020, 19:31

Теги

Похожие вопросы