Я подключаюсь через SSH с компьютера, на котором хранятся мои ключи, пересылаю на вторую машину, а затем пытаюсь использовать ключи из tmux. Я, кажется, "потерял" переадресацию при входе в tmux. Как можно «снова переслать», чтобы я мог использовать свои ключи из tmux?
$ ssh [server] -o ForwardAgent=yes
$ git pull # Succeeds.
$ /bin/bash
$ git pull # Still succeeds, despite new shell.
$ exit
$ tmux attach
$ git pull # Permission denied (publickey)
Ответы:
Если вы присоединяете уже существующий сеанс tmux, оболочка не наследует переменные среды от вашей оболочки входа в систему. В частности, он не наследует переменные среды агента ssh.
Попробуйте это исправить :
Создайте этот скрипт и поместите его в $ HOME / .ssh / saveagent
Добавьте его в свой скрипт запуска оболочки. Например, если вы используете bash:
После подключения tmux запустите
. $HOME/.ssh/latestagent
Смотрите также Как я могу запустить скрипт сразу после подключения через SSH? и присоединиться к сеансу tmux и запустить команду
источник
saveagent
сценарии должны быть:echo "export $var=\"$(eval echo '$'$var)\""
. b -latestagent
скрипт должен вызыватьсяsource
вместоsh
, поэтому установка переменных повлияет на вызывающую оболочку. c -latestagent
автоматический вызов скрипта при подключении tmux может быть выполнен по методу, описанному здесь: unix.stackexchange.com/questions/86925/…Если вы не хотите создавать сценарий, содержащий все переменные, которые вам нужны, в каждой оболочке, которую
tmux
вы потом порождаете в любой новой оболочке, порожденной теми же сеансами на сервере, вы, вероятно, захотите указатьtmux
переменные в сеансе или глобальных средах с помощьюset-environment
команды. Например, вот так (для bash):не забудьте добавить
-g
флаг, если вы хотите его использовать и в других сеансах, и использовать,-t <session>
если вы запускаете его извнеtmux
.источник
Прочитав другие ответы здесь, я решил просто скопировать мою пару открытых / закрытых ключей на удаленный сервер, чтобы мне больше не нужно было беспокоиться о переадресации агента.
источник