¿Es posible compartir un socket tmux entre hosts?

11

Me pregunto si es posible compartir un socket de servidor tmux entre diferentes hosts. Por ejemplo, tengo una máquina virtual (invitado) ejecutándose dentro de mi host, y estoy ejecutando una sesión tmux en el invitado, ¿es posible que mi máquina host acceda a la sesión tmux del invitado y haga cosas interesantes con ella? (por ejemplo, enviar comandos a la sesión del invitado)?

EnToutCas
fuente

Respuestas:

10

Un tema relacionado surgió en la lista de correo de tmux-users : tratar de usar socat para tunelizar el socket tmux

Resumen:

  • Simplemente reenviar el diálogo en banda, sobre el zócalo entre un cliente tmux y su servidor no funcionará porque tmux usa el paso del descriptor de archivo (el cliente pasa su tty fd al servidor).
    • Podría ser posible desarrollar un proxy especializado, pero parece que no sería trivial: necesitaría saber lo suficiente del protocolo de socket tmux para saber cuándo aceptar y enviar archivos fds, y necesitaría un método de proxy. fds y cualquier operación realizada en esos fds.
  • El póster de la lista de correo logró elaborar un sistema de reenvío tmux usando socat que funcionó principalmente .
    • Probablemente podría establecer un tamaño de terminal inicial diferente dando las opciones -xy -ya new-session, pero esto no solucionaría el manejo de cambio de tamaño ( socat necesitaría manejar y reenviar SIGWINCH (a través de los ioctls TIOCGWINSZ / TIOCSWINSZ)).
    • Parece que es posible que desee que su "servidor de reenvío" esté en su sistema operativo invitado, pero la solución vinculada haría que el servidor esté en su sistema operativo host. Probablemente podría volver a trabajarlo para que sea al revés.

A menos que haya alguna razón por la que no pueda ejecutar un servidor SSH en su invitado, probablemente sea más fácil usar SSH para iniciar sesión en su invitado (deje que los programas SSH manejen la conexión a través de la red y administren los ttys) y se conecten (o emitan comandos) a) el tmux residente de esa manera:

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

Puede crear una clave SSH y ~/.ssh/configentradas en su host para simplificar las líneas de comando ssh (es decir, utilizando justo ssh guestarriba en lugar de ssh -i guest-user1-key user1@guest-vm-ip).

Chris Johnsen
fuente
Me pregunto si esto podría construirse ahora usando el modo de control tmux
mndrix