Ответы:
Когда 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-agent таким образом, вместе с проверкой файлов конфигурации SSH, а не смотреть на вывод SSH.