Anexe uma sessão do tmux a uma máquina remota

24

Estou usando o tmux na minha máquina local e geralmente tenho várias sessões simultaneamente.

O que geralmente faço é ter uma sessão com janelas diferentes para trabalhar localmente e as outras sessões nas quais conecto várias janelas a um host por sessão.

Uma árvore de sessão / janela ficaria assim no uso diário que eu faço do tmux:

(TMUX on my local machine)
 |
 +- session 1: local
 |  \_ window 1: local shell
 |  \_ window 2: local shell
 |  \_ ...
 |
 + session 2: somehost
 |  \_ window1: ssh user@somehost
 |  \_ window2: ssh user@somehost
 |  \_ ...
 |
 + session 3: someotherhost
    \_ window1: ssh user@someotherhost
    \_ window2: ssh user@someotherhost
    \_ ...

Existe uma maneira de fazer a sessão 2 & sessão 3 algum tipo de sessões remotas conectando-se a uma sessão tmux criada em somehost & someotherhost?

A árvore acima ficaria assim:

(TMUX on my local machine)
 |
 +- session 1: local
 |  \_ window 1: local shell
 |  \_ window 2: local shell
 |  \_ ...
 |
 + session 2 linked to an existing session on somehost
 |  \_ window1: shell on somehost
 |  \_ window2: shell on somehost
 |  \_ ...
 |
 + session 3 linked to an existing session on someotherhost
    \_ window1: shell on someotherhost
    \_ window2: shell on someotherhost
    \_ ...

Encontrei este tópico, mas não tenho certeza se é isso que quero fazer: É possível compartilhar um sockets tmux entre hosts?

Suponho que o que estou procurando exigiria que eu tivesse a mesma configuração do tmux na minha máquina local, somehost & someotherhost mas isso não seria um problema.

    
por lilorox 17.02.2015 / 09:40

4 respostas

17

Você pode passar um comando para o ssh ao se conectar a um host remoto. Inclua a opção -t com tmux attach-session para conectar-se à sessão remota do tmux:

ssh <remote host> -t tmux attach-session

Esta postagem em anexada a um A sessão do tmux via ssh explica isso com mais detalhes.

    
por 08.05.2015 / 17:47
1

Você poderia usar uma ferramenta como socat para tunelar o soquete de domínio unix usado pelo tmux em sua máquina local. Mas você está realmente apenas trocando um túnel (ssh) por outro (socat), então não é realmente melhor, e também inseguro.

    
por 28.02.2018 / 05:44
1

Se o seu principal problema é que você precisa digitar ssh remotehost toda vez que abrir uma nova janela, a opção default-command session pode ser uma solução alternativa.

Ele executa automaticamente o comando especificado ao abrir novas janelas nas sessões para as quais você o definiu.

Uma configuração simples em .tmux.conf :

bind-key C-r new-session ssh remotehost \; set-option default-command "ssh remotehost"

Essa ligação de chave Ctrl-r cria uma nova sessão em que todas as janelas abertas recentemente executam ssh remotehost em seu nome.

Você pode escolher os hosts para conectar na hora da criação da sessão com as configurações abaixo:

bind-key C-r command-prompt "new-session -s %1 ssh %1 \; set-option default-command \"ssh %1\""

Este pergunta-lhe o host que você quer fazer ssh em cada criação de sessão (não em cada criação de janela) e inicia a sessão dedicada a esse host.

Demora pouco tempo para executar muitos ssh se você habilitar a multiplexação SSH em sua configuração ssh. O exemplo .ssh/config está abaixo:

Host remotehost
    ControlMaster auto
    ControlPath ~/.ssh/mux-%r@%h:%p
    ControlPersist 10

Observe que essa configuração do tmux não cria sessões do tmux em hosts remotos. Se a conexão ssh for perdida, as janelas do tmux afetadas nunca retornarão.

    
por 19.10.2018 / 06:56
0

Se você está falando de shell remoto, você quer dizer que você pode executar comandos lá, em outras palavras, você tem acesso direto. Nesse caso, você pode simplesmente usar ssh connection para cada janela remota.

Você pode dizer algo como:

"Ei, mas não há como ter várias janelas para cada servidor remoto!"

e é verdade, devido a restrições ssh. Mas você pode iniciar a sessão do tmux em cada um deles ou no seu servidor remoto. NOTA: neste caso, você precisa religar o padrão Ctrl+b na máquina local para evitar colisões.

Também recomendo que você use tmuxinator , é uma ferramenta muito útil se você recriar sua sessão tmux pelo menos todos os dias.

    
por 11.04.2015 / 10:19

Tags