Обнаружение передачи агента SSH

cat htmlfile.html | mail -s "subject" xx@example.com
20
20.02.2014, 21:34
2 ответа

Когда ssh агент вперед включен на клиенте (ForwardAgent yes на ~/.ssh/config) и также включен на удаленном сервере AllowAgentForwarding yes, при входе к удаленному серверу переменной среды SSH_AUTH_SOCK должен существовать. Затем, если Вы входите в другой сервер (Вы, открытый ключ должен находиться на этом третьем сервере), Вам нельзя предложить пароль.

Разъясниться:

home$ ssh-add
Enter passphrase ...
Identity added ...
$ ssh  hostA
hostA$ env | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK=/tmp/...
$ ssh hostB
hostB$
21
27.01.2020, 19:44
  • 1
    ssh-add то, что добилось цели для меня. Я работал в течение многих месяцев, не зная об этом. Затем я переключил рабочие столы от Единицы до LXDE, и передача ключа агента прекратила работать. –  Mark Hudson 27.09.2012, 02:04
  • 2
    @MarkHudson По некоторым причинам при выполнении LXDE необходимо работать ssh-add каждый раз Вы открываете новую консоль. Таким образом, я добавил ту командную строку в конец ~/.bash_profile, и теперь передача агента аутентификации работает каждый раз прозрачно! –  Paul Bernal 20.02.2014, 18:28
  • 3
    @PaulBernal Вы не должны действительно должны быть делать это, я предполагаю, что Вы не имеете ssh-agent настроенный правильно. Посмотрите mah.everybody.org/docs/ssh –  Michael Mrozek♦ 20.02.2014, 19:37
  • 4
    m2c: файл в "${SSH_AUTH_SOCK}" сокет, можно протестировать его с if [[ ! -S "${SSH_AUTH_SOCK}" ]]; then echo "warn: no forward agent detected ('${SSH_AUTH_SOCK}' is not a socket)"; fi –  Boop 15.03.2018, 12:47

Проверка окружения для SSH_AUTH_SOCK хороша для прямых ssh соединений.

Если вы используете прокси (proxy_command), то у вас может возникнуть ситуация, которая выглядит так:

local -> hostA -> hostB -> hostC -> hostD

Если на всех этих хостах активна переадресация агентов, то SSH_AUTH_SOCK будет установлен и "содержит" ваш ssh ключ от local на всех хостах.

Теперь предположим, что переадресация агентов отключена на hostB, но включена на hostC. SSH_AUTH_SOCK будет установлен на hostD, но на самом деле он будет "пустым". Конечно, агент переадресуется, но только с hostC на hostD. Цепь разорвана.

Теперь, чтобы проверить, действительно ли ключ доступен на hostD, вы можете просто позвонить ssh-add. В любом случае он выйдет с кодом 1, но если ключ недоступен, он покажет это на stderr:

Не смог открыть соединение с вашим агентом аутентификации.

Таким образом, вы можете проверить SSH_AUTH_SOCK плюс убедиться, что ssh_add не имеет выхода.

4
27.01.2020, 19:44

Теги

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