我主要在Mac上工作,并将ssh / tmux附加到Linux机器上以完成工作。我在Linux机器上运行ssh-agent。我有
set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY"
在我的.tmux.conf
。然而,每当我重新参加本次会议时,我都必须跑步
tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
为了$SSH_AUTH_SOCK
正确设置新的tmux窗口。我希望不必这样做。有任何想法吗?
更新资料
我想我的解释不太好。这是我的shell函数,用于在远程计算机上打开shell:
sshh () {
tmux -u neww -n ${host} "ssh -Xt ${host} $*"
}
当TMUX运行此ssh命令,$SSH_AUTH_SOCK
是没有设置,即使是在我的本地环境设置。如果使用setenv
上面的命令将其放在tmux的环境中,则一切正常。我的问题是,为什么我必须完全运行setenv命令?
更新2
更多信息:
当我附加到现有会话时,$SSH_AUTH_SOCK
未在tmux环境(或全局环境)中设置。
% tmux showenv | grep -i auth_sock
-SSH_AUTH_SOCK
如果我手动设置它,则工作正常:
% tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
如果我分离并重新连接,$SSH_AUTH_SOCK
则返回到未设置状态。
env
什么?