Lavoro principalmente su un mac e ssh / tmux attach su una macchina Linux per fare il mio lavoro. Ho ssh-agent in esecuzione sulla macchina Linux. io ho
set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY"
nel mio .tmux.conf
. Tuttavia, ogni volta che mi ricollego a questa sessione, devo correre
tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
affinché le nuove finestre di tmux siano state $SSH_AUTH_SOCK
impostate correttamente. Preferirei non doverlo fare. Qualche idea?
Aggiornare
Penso che non lo sto spiegando bene. Ecco la mia funzione shell per aprire una shell su una macchina remota:
sshh () {
tmux -u neww -n ${host} "ssh -Xt ${host} $*"
}
Quando tmux esegue questo comando ssh, non$SSH_AUTH_SOCK
è impostato, anche se è impostato nel mio ambiente locale. Se lo metto nell'ambiente di tmux con il comando sopra, tutto funziona bene. La mia domanda è: perché devo eseguire il comando setenv?setenv
Aggiornamento 2
Maggiori informazioni:
Quando mi collego a una sessione esistente, $SSH_AUTH_SOCK
non è impostato nell'ambiente tmux (o ambiente globale).
% tmux showenv | grep -i auth_sock
-SSH_AUTH_SOCK
Se lo imposto manualmente, le cose funzionano:
% tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
Se mi stacco e ricollego, $SSH_AUTH_SOCK
torna a non essere impostato.
env
?