Integração do servidor remoto, iTerm2 e tmux

27

Eu quero ser capaz de iniciar uma sessão do tmux em um servidor remoto e, em seguida, usar as janelas nativas e as telas divididas do iTerm2 na minha máquina local.

Por exemplo, digamos que meu servidor remoto tenha uma sessão tmux sendo executada com uma janela que tenha dois painéis. No iTerm2 na minha máquina local, eu quero dois painéis iTerm2 nativos, de modo que cada painel contenha um painel tmux diferente.

Isso é possível?

(Eu sei que o inverso é possível - por meio do qual eu posso executar uma sessão do tmux em minha máquina local e outra máquina verá minhas abas do iTerm2 como janelas, por exemplo. Mas isso parece meio que inútil.)

    
por Nick 15.04.2014 / 01:15

2 respostas

36

Sim, é possível, mas certifique-se de que:

  • Para ter a versão mais recente do tmux instalada remotamente
  • Ter a versão mais recente do iterm2 instalada localmente

Login via ssh login@hostname -t 'tmux -CC' e voilà - isso deve abrir a janela do iTerm2 na sua caixa local logada na caixa remota.

    
por 25.04.2014 / 16:29
4

Aqui está o que funcionou para mim, com as versões de lançamento estável a partir de 2015-12-16, que são o iTerm 2.1.4 no OS X 10.11.2 e o tmux 1.9 no Linux Raspbian:

  1. Primeiro, use .ssh/config em sua máquina local e .ssh/authorized_keys em sua máquina remota para configurar o login sem senha no sistema remoto. Uma vez que isto esteja configurado corretamente, você deve ser capaz de fazer o login apenas fazendo ssh pi (supondo que pi seja o nome do host do seu sistema remoto).

  2. Crie um novo perfil iTerm2 que, em vez de fazer um login no seu shell local, só chama ssh pi para acessar a máquina remota. Para configurar isso, vá em: Preferences / Profiles / + / Command.Command="ssh pi"

  3. Abra uma janela iTerm2 na máquina remota através do seu novo perfil, fazendo: Profiles / Pi.

  4. Na janela de login remoto do iTerm2, na linha de comando, faça: tmux -CC . Depois disto, a sua janela iTerm2 mostra o modo de comando tmux, o tmux cria uma nova sessão e o iTerm2 cria imediatamente uma nova janela iTerm2 para essa sessão tmux. Dentro dessa nova janela iTerm2, o separador inicial iTerm2 representa a única janela tmux dessa sessão. Se você fizer o CMD-T, isso criará uma nova aba do iTerm2, representando uma nova janela do tmux.

Como você usa isso?

  • Neste ponto você pode fazer "Shell / tmux / Dashboard" para observar o entendimento do iTerm2 das sessões e janelas tmux existentes.

  • Se você fechar a janela do iTerm2 representando a sessão do tmux, ele mata a sessão subjacente e todas as janelas do tmux.

  • Se você fechar a janela do iTerm2 mostrando o modo de comando do tmux, parecerá apenas matar a instância do cliente tmux que estava conectada a essa sessão, portanto ambas as janelas do iTerm2 desaparecem, mas a sessão do tmux ainda está ativa e você pode voltar a anexá-lo.

  • Se você deseja um desanexamento mais ordenado do tmux, faça apenas ESC dentro da janela do modo de comando do tmux.

  • Se em vez de criar uma nova sessão do tmux, o que você queria originalmente era anexar a uma sessão existente, então você pode fazer isso com tmux -CC attach .

Em teoria, acho que deveria haver uma maneira de configurar o iTerm2 ou o tmux para que, quando você se conecta ao sistema remoto, seja automaticamente anexado a qualquer sessão tmux existente, mas não consegui fazer isso funcionar modificando linha de comando no perfil do iTerm2.

    
por 16.12.2015 / 20:17

Tags