원격 SSH 셸에 tmux를 중첩하지 마세요.

원격 SSH 셸에 tmux를 중첩하지 마세요.

.zshrctmux아직 실행되지 않는 한 로그인 시 자동으로 시작되도록 연결하는 모든 호스트에 내 사용자 계정을 설정했습니다.

if [ -z "$TMUX" ]; then tmux attach -d || tmux new fi

로컬 호스트의 tmux 세션에서 원격 호스트의 내 계정으로 ssh(또는 mosh)할 때까지는 제대로 작동했습니다. 매크로가 로컬 호스트에서 원격 호스트로 전달되지 않기 때문에 $TMUXtmux는 원격 호스트에서 시작되고 이제 두 개의 중첩된 tmux 세션이 있습니다.

자동 시작 동작을 유지하면서 이를 방지할 수 있는 방법이 있습니까? 이상적으로는 원격 셸이 연결 중인 호스트의 tmux 세션에서 시작되었음을 알고 두 번째 tmux 인스턴스를 시작하지 않기를 바랍니다.

$TERM원격 셸을 확인해 보았지만 xterm-256color로컬 컴퓨터의 tmux 세션에서 실행 중인지 여부에 관계없이 항상 이 작업을 수행합니다.

답변1

@mark-plotnick의 의견 덕분에 나에게 맞는 솔루션이 있는 것 같습니다.

원격 호스트에서 /etc/ssh/sshd_config에 추가합니다.

AcceptEnv TMUX

localhost에서 ~/.ssh/config에 추가합니다.

Host * SendEnv TMUX

이제 env 변수의 값은 $TMUX원격 호스트로 전송되며 tmux값이 null이 아닌 경우 더 이상 시작되지 않습니다.

서버측 변경에는 신경쓰지 않지만 모든 클라이언트를 편집할 필요는 없으므로 ~/.ssh/config다른 제안도 받아들일 수 있습니다.

관련 정보