Виявлення переадресації агента SSH


19

Як я можу дізнатись, чи встановлено з'єднання SSH з переадресацією агента або без нього?

Я намагаюся зробити наступне:

ssh-add -D (delete all stored keys)
ssh --vvv something
ssh-add (adding key)
ssh --vvv something

і порівняти вихід, але я бачу лише тонкі відмінності.


1
Для ознайомлення ознайомтеся з цією приємною статтею: blog.joncairns.com/2013/12/understanding-ssh-agent-and-ssh-add . Це вказує на гарне репо GitHub зі ssh-find-agentсценарієм пошуку та використання наявних ssh-агентів, дуже зручно! РЕПО має кілька прикладів у програмі README. Ви можете виявити, чи ввімкнено ssh-агент разом із інспекцією файлів конфігурації SSH, а не дивлячись на вихід SSH.
trusktr

Відповіді:


21

Коли ввімкнено пересилання 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$

1
Це ssh-addте, що зробило трюк для мене. Я працював місяцями, не знаючи про це. Тоді я перейшов робочий стіл з Unity на LXDE і переадресація ключів агента перестала працювати.
Марк Хадсон

@MarkHudson Чомусь під час запуску LXDE вам потрібно запускати ssh-addкожного разу, коли ви відкриваєте нове вікно консолі. Тому я додав цей командний рядок до кінця ~/.bash_profile, і тепер переадресація агента аутентифікації працює кожного разу прозоро!
Пол Бернал

@PaulBernal Вам насправді цього не потрібно робити, я думаю, ви не ssh-agentналаштували правильно. Дивіться mah.everybody.org/docs/ssh
Michael Mrozek

1
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

4

Перевірка середовища на 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немає результатів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.