2015-05-21 2 views
0

[SSH] "Не удалось открыть подключение к вашему агенту аутентификации". errorДобавление ключей ssh ​​в ssh-agent не выполняется с запущенным агентом, переменные среды установлены

Я пытаюсь добавить ключи ssh в свой агент ssh. Я начинаю с того, что работает ssh-agent.

exec ssh-agent bash 

Я уверен, что работает ssh-agent.

ps axu | grep [s]sh 

и получить следующие

корень 1562 ... SSH-агент Баш

Переменные Env установлены правильно.

SSH_AGENT_PID = 1562

SSH_AUTH_SOCK =/TMP/SSH-699iHAxuK4xX/agent.1561

Однако, когда я пытаюсь добавить секретный ключ, используя

sudo ssh-add ~/.ssh/peter-key 

Я получаю ошибка ssh

Не удалось открыть соединение с вашим агентом аутентификации.

Я пробовал предложения по stackoverflow и serverfault, но ничего.

Примечание: Я запускаю машину linux на одной из машин AWS свободного уровня с ubuntu. Группа безопасности моего экземпляра разрешает (временно) все входящие и исходящие ssh-соединения с любого IP-адреса. Кто-нибудь знает, что такое ошибка?

ответ

1

Просто используйте

ssh-add ~/.ssh/peter-key 

... нет ...

sudo ssh-add ~/.ssh/peter-key 

Использование sudo (необязательно/настроить использую, но, как правило) удаляет ряд переменных окружения, в том числе те, которые вы только проверенными Были установлены. (Сравните выход sudo env и обычный env, чтобы увидеть этот эффект).

Если вы должны использовать sudo прочитать ключ, то вы можете быть уверены, что необходимая переменная среды с другой стороны, делая это явно себя:

sudo env "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" ssh-add ~/.ssh/peter-key 

Однако, это возможно для безопасности -чувствительные программы, работающие с сокетами UNIX для проверки прав собственности и разрешения программного обеспечения на другом конце этого сокета, а также отказаться от связи с чем-либо, работающим с учетной записью пользователя, отличным от ожидаемого, поэтому возможно, что этот подход может не быть надежным в будущем с функциями безопасности, добавленными в ssh-agent.

+0

Может показаться, что «env» может не понадобиться здесь в соответствии с быстрым просмотром справочной страницы (также с помощью изменений 'env', какая команда проверена на sudo-политике, не так ли? На всякий случай это важно.) , –

+0

@EtanReisner, true, но чтобы переопределить среду с помощью 'sudo var = value commandname ...' * также * требуется соответствующая настройка в файле sudoers. Кроме того, откровенно говоря, 'sudo' может быть сконфигурирован так много разных способов, которые я предпочитаю вынимать из изображения как можно раньше; поведение «env» гораздо менее вариабельно. –

+0

Достаточно справедливо (запрет среды, которая специально позволяет 'ssh-add' или что-то еще и запрещает' env' по крайней мере). Необходимость 'sudo' для' ssh-add' кажется странным для начала. –