É possível compartilhar soquetes tmux entre hosts?

11

Gostaria de saber se é possível compartilhar um soquete de servidor tmux entre diferentes hosts. Por exemplo, eu tenho uma máquina virtual (convidado) em execução no meu host e estou executando uma sessão tmux no convidado, é possível que minha máquina host acesse a sessão tmux do convidado e faça coisas legais com ela? (por exemplo, enviando comandos para a sessão do convidado)?

EnToutCas
fonte

Respostas:

10

Um tópico relacionado surgiu na lista de discussão tmux-users : Tentando usar o socat para encapsular o soquete tmux

Resumo:

  • O simples encaminhamento da caixa de diálogo dentro da banda e sobre o soquete entre um cliente tmux e seu servidor não funcionará porque o tmux usa a passagem do descritor de arquivo (o cliente passa seu tty fd para o servidor).
    • Pode ser possível desenvolver um proxy especializado, mas parece que isso não é trivial - seria necessário conhecer o suficiente do protocolo de soquete tmux para saber quando aceitar e enviar fds e seria necessário um método de proxy do fds e quaisquer operações realizadas nesses fds.
  • O pôster da lista de discussão conseguiu elaborar um sistema de encaminhamento tmux usando o socat que mais funcionava .
    • Você provavelmente poderia definir um tamanho de terminal inicial diferente, dando ao -xe -yopções para new-session, mas isso não correção manipulação de redimensionamento ( socat precisaria alça e SIGWINCH frente (através TIOCGWINSZ / ioctls TIOCSWINSZ)).
    • Parece que você pode querer que seu “servidor de encaminhamento” esteja no sistema operacional convidado, mas a solução vinculada faria com que o servidor estivesse no sistema operacional host. Você provavelmente poderia refazê-lo para que o contrário funcione.

A menos que haja algum motivo para você não poder executar um servidor SSH no seu convidado, provavelmente é mais fácil usar o SSH para fazer login no seu convidado (permita que os programas SSH lidem com a conexão pela rede e com o gerenciamento dos ttys) e se anexe a (ou emita comandos para) o tmux residente dessa maneira:

host$ ssh guest tmux attach -t console
host$ ssh guest tmux new-session -s 'fiddling around'
# etc.

Você pode criar uma chave SSH e ~/.ssh/configentradas no seu host para simplificar as linhas de comando ssh (ou seja, usando um pouco ssh guestacima em vez de ssh -i guest-user1-key user1@guest-vm-ip).

Chris Johnsen
fonte
Eu me pergunto se isso agora poderia ser construído usando o modo de controle tmux
mndrix