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