Eu trabalho principalmente em um mac e ssh / tmux anexado a uma máquina Linux para fazer o meu trabalho. Eu tenho o ssh-agent em execução na máquina Linux. eu tenho
set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY"
no meu .tmux.conf
. No entanto, sempre que me reconecto a esta sessão, tenho que executar
tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
para que as novas janelas tmux sejam $SSH_AUTH_SOCK
definidas corretamente. Eu preferiria não ter que fazer isso. Alguma ideia?
Atualizar
Eu acho que não estou explicando isso bem. Aqui está a minha função de shell para abrir um shell em uma máquina remota:
sshh () {
tmux -u neww -n ${host} "ssh -Xt ${host} $*"
}
Quando o tmux executa esse comando ssh, ele não$SSH_AUTH_SOCK
está definido, mesmo que esteja definido no meu ambiente local. Se eu colocar isso no ambiente do tmux com o comando acima, tudo funcionará bem. Minha pergunta é: por que eu tenho que executar o comando setenv?setenv
Atualização 2
Mais Informações:
Quando eu me conecto a uma sessão existente, $SSH_AUTH_SOCK
não está definido no ambiente tmux (ou ambiente global).
% tmux showenv | grep -i auth_sock
-SSH_AUTH_SOCK
Se eu configurá-lo manualmente, as coisas funcionam:
% tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
Se eu desconectar e reconectá-lo, $SSH_AUTH_SOCK
voltará a não ser definido.
env
?