ssh-add не может подключиться к ssh-agent

Я знаю, что ssh-addявляется «внешним интерфейсом» ssh-agent.

Но ssh-agentна моем компьютере уже запущен (я смог найти его в top).Когда я набираю ssh-add, он сказал "Не удалось открыть соединение с вашим агентом аутентификации".

Как ssh-addв деталях связывается с ssh-agent?

Моя ситуация

#! /bin/sh

# hello.sh

eval $(ssh-agent -s)
ssh-add

Тогда,

bash ./hello.sh

когда я набираю

ssh-add some-new-key

в терминале,

выводится это сообщение об ошибке

1
17.06.2020, 14:26
1 ответ

Результатом ssh-agent -sявляются некоторые назначения переменных среды, что-то вроде SSH_AUTH_SOCK=blahblah; export SSH_AUTH_SOCKи т. д. Когда вы запускаете eval $(ssh-agent -s), оболочка выполняет это как код, и эти переменные устанавливаются в этой оболочке. Переменные там содержат информацию, необходимую ssh-addдля связи с агентом, и они наследуются от оболочки до процесса ssh-add.

Но здесь вы управляете им изнутри hello.sh. Оболочка, выполняющая сценарий, является независимым процессом, отличным от верхней интерактивной оболочки, которая запустилась hello.sh, и переменные не наследуются «вверх».

Вместо этого, если вы используете источник сценария с source hello.shили . hello.sh, он запускается в той же оболочке ,и переменные назначаются правильно.

Однако, если вы используете несколько оболочек (несколько эмуляторов терминала, сеансы SSH, окна screen/tmux, что угодно ), вам действительно нужен только один ssh-agent. Вам нужно будет где-то сохранить назначения переменных в файл и загрузить их, например, из. .bashrc. Но я не знаю, что именно ты делаешь.

1
18.03.2021, 23:26

Теги

Похожие вопросы