Je travaille principalement sur un mac et ssh / tmux attachés à une machine Linux pour faire mon travail. J'ai ssh-agent en cours d'exécution sur la machine Linux. j'ai
set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY"
dans mon .tmux.conf
. Pourtant, chaque fois que je me rattache à cette session, je dois courir
tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
afin que les nouvelles fenêtres tmux soient $SSH_AUTH_SOCK
correctement configurées. Je préférerais ne pas avoir à faire cela. Des idées?
Mise à jour
Je pense que je ne l'explique pas bien. Voici ma fonction shell pour ouvrir un shell sur une machine distante:
sshh () {
tmux -u neww -n ${host} "ssh -Xt ${host} $*"
}
Lorsque tmux exécute cette commande ssh, $SSH_AUTH_SOCK
n’est pas défini, même s’il est défini dans mon environnement local. Si je mets cela dans l'environnement tmux avec la setenv
commande ci-dessus, tout fonctionne correctement . Ma question est la suivante: pourquoi dois-je exécuter la commande setenv?
Mise à jour 2
Plus d'information:
Lorsque j'attache à une session existante, $SSH_AUTH_SOCK
n'est pas défini dans l'environnement tmux (ou l'environnement global).
% tmux showenv | grep -i auth_sock
-SSH_AUTH_SOCK
Si je le configure manuellement, les choses fonctionnent:
% tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
Si je me détache et que je réattache, cela $SSH_AUTH_SOCK
revient à ne pas être défini.
env
?