Não aninhe o tmux em um shell ssh remoto

2

Configurei o .zshrc da minha conta de usuário em todos os hosts aos quais me conecto para iniciar automaticamente o tmux no login, desde que ele ainda não esteja em execução.

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

Isso funciona bem até que eu ssh (ou mosh) em minha própria conta em um host remoto de dentro de uma sessão tmux no host local. Como a macro $TMUX não é passada do host local para o remoto, o tmux é iniciado no host remoto e agora tenho duas sessões tmux aninhadas.

Existe uma maneira de evitar isso mantendo o comportamento de inicialização automática? Idealmente, eu gostaria que o shell remoto soubesse que ele está sendo lançado de dentro de uma sessão do tmux no host que está se conectando e não iniciar uma segunda instância do tmux.

Eu já tentei verificar $TERM no shell remoto, mas é sempre xterm-256color , independentemente de estar sendo executado em uma sessão do tmux na máquina local.

    
por Gene Goykhman 30.01.2018 / 18:23

1 resposta

2

Graças ao comentário do @ mark-plotnick, acho que tenho uma solução que funciona para mim.

No host remoto, adicione a / etc / ssh / sshd_config:

AcceptEnv TMUX

No host local, adicione a ~ / .ssh / config:

Host * SendEnv TMUX

Agora, o valor da variável $TMUX env é enviado para o host remoto e tmux não é mais iniciado quando o valor não está em branco.

Não me importo de fazer a alteração no lado do servidor, mas gostaria de não ter que editar todos os clientes ~/.ssh/config , por isso estou aberto a sugestões adicionais.

    
por 30.01.2018 / 20:01