Відповіді:
Коли ввімкнено пересилання 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$
ssh-addте, що зробило трюк для мене. Я працював місяцями, не знаючи про це. Тоді я перейшов робочий стіл з Unity на LXDE і переадресація ключів агента перестала працювати.
ssh-addкожного разу, коли ви відкриваєте нове вікно консолі. Тому я додав цей командний рядок до кінця ~/.bash_profile, і тепер переадресація агента аутентифікації працює кожного разу прозоро!
ssh-agentналаштували правильно. Дивіться mah.everybody.org/docs/ssh
"${SSH_AUTH_SOCK}"сокет, ви можете його протестуватиif [[ ! -S "${SSH_AUTH_SOCK}" ]]; then echo "warn: no forward agent detected ('${SSH_AUTH_SOCK}' is not a socket)"; fi
Перевірка середовища на 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немає результатів.
ssh-find-agentсценарієм пошуку та використання наявних ssh-агентів, дуже зручно! РЕПО має кілька прикладів у програмі README. Ви можете виявити, чи ввімкнено ssh-агент разом із інспекцією файлів конфігурації SSH, а не дивлячись на вихід SSH.