Tôi chủ yếu làm việc trên máy mac và ssh / tmux gắn vào máy Linux để thực hiện công việc của mình. Tôi có ssh-agent chạy trên máy Linux. Tôi có
set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY"
trong tôi .tmux.conf
. Tuy nhiên, bất cứ khi nào tôi gắn lại vào phiên này, tôi phải chạy
tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
để các cửa sổ tmux mới $SSH_AUTH_SOCK
được đặt chính xác. Tôi muốn không phải làm điều này. Có ý kiến gì không?
Cập nhật
Tôi nghĩ rằng tôi không giải thích điều này tốt. Đây là chức năng shell của tôi để mở shell trên máy từ xa:
sshh () {
tmux -u neww -n ${host} "ssh -Xt ${host} $*"
}
Khi tmux chạy lệnh ssh này, $SSH_AUTH_SOCK
là không được thiết lập, mặc dù nó được đặt trong môi trường địa phương của tôi. Nếu tôi đặt nó trong môi trường của tmux với setenv
lệnh ở trên, mọi thứ sẽ hoạt động tốt. Câu hỏi của tôi là, tại sao tôi phải chạy lệnh setenv?
Cập nhật 2
Thêm thông tin:
Khi tôi đính kèm vào một phiên hiện có, $SSH_AUTH_SOCK
không được đặt trong môi trường tmux (hoặc môi trường toàn cầu).
% tmux showenv | grep -i auth_sock
-SSH_AUTH_SOCK
Nếu tôi đặt thủ công, mọi thứ sẽ hoạt động:
% tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
Nếu tôi tách ra và gắn lại, $SSH_AUTH_SOCK
quay lại không được đặt.
env
gì?