Ich arbeite hauptsächlich auf einem Mac und ssh / tmux, um meine Arbeit zu erledigen. Ich habe ssh-agent auf dem Linux-Rechner ausgeführt. ich habe
set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY"
in meinem .tmux.conf
. Immer wenn ich mich wieder an diese Sitzung anschließe, muss ich rennen
tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
damit sich neue tmux windows $SSH_AUTH_SOCK
richtig eingestellt haben. Ich würde es vorziehen, dies nicht tun zu müssen. Irgendwelche Ideen?
Aktualisieren
Ich glaube, ich erkläre das nicht gut. Hier ist meine Shell-Funktion zum Öffnen einer Shell auf einem Remote-Computer:
sshh () {
tmux -u neww -n ${host} "ssh -Xt ${host} $*"
}
Wenn tmux diesen Befehl ssh läuft, $SSH_AUTH_SOCK
ist nicht festgelegt, obwohl es ist in meiner lokalen Umgebung. Wenn ich dies mit dem setenv
obigen Befehl in die tmux-Umgebung setze , funktioniert alles einwandfrei . Meine Frage ist, warum ich den Befehl setenv überhaupt ausführen muss.
Update 2
Mehr Informationen:
Wenn ich eine Verbindung zu einer vorhandenen Sitzung herstelle, $SSH_AUTH_SOCK
wird dies nicht in der tmux-Umgebung (oder globalen Umgebung) festgelegt.
% tmux showenv | grep -i auth_sock
-SSH_AUTH_SOCK
Wenn ich es manuell einstelle, funktionieren die Dinge:
% tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
Wenn ich die Verbindung löse und erneut anbringe, wird $SSH_AUTH_SOCK
die Verbindung nicht hergestellt.
env
?