Я пытаюсь сохранить аутентификацию SSH с командой ssh-add
для sudo использования:
linux$ sudo ssh-add /root/.ssh/id_rsa
Could not open a connection to your authentication agent.
но, как обозначено это возвращает ошибку
Я сделал некоторое исследование, и я нашел, что имею выполнить команду eval "ssh-agent -s"
как обозначено в следующей ссылке: https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent/17695338#17695338
Но я получил ошибку, если выполняют его с командой sudo
$ sudo eval `ssh-agent -s`
sudo: eval: command not found
Что я пропускаю?
От следующего ссылка :
, К счастью, существует способ решить эту проблему. Sudo имеет параметр конфигурации, который позволяет сохранять данным переменные окружения от пользователя, дающего sudo команду. Опции называют env_keep и можно настроить путем изменения настроек в/etc/sudoers файлах следующим образом (всегда используют visudo для редактирования файла):
visudo
Defaults env_reset
Defaults>root env_keep+=SSH_AUTH_SOCK
, Другими словами, добавьте строку, сохраняющую переменную SSH_AUTH_SOCK ниже Значений по умолчанию env_reset строка. Затем сохраните файл и работайте
ssh-agent bash
ssh-add
, и необходимо смочь выполниться, sudo управляют что доступы сервер с помощью non-sudo user’s ключ, не попросившись ключевого пароля.
К сожалению, я не могу найти первоисточник этого предложения, но это помогло мне. По сути, он использует переменные среды ssh текущих пользователей при запуске команды с помощью sudo.
sudo sh -c 'export SSH_AUTH_SOCK="'"$SSH_AUTH_SOCK"'"; export SSH_AGENT_PID="'"$SSH_AGENT_PID"'"; ssh-add /root/.ssh/id_rsa'