Le partage de sockets tmux entre hôtes est-il possible?

11

Je me demande s'il est possible de partager un socket de serveur tmux entre différents hôtes. Par exemple, une machine virtuelle (invité) s'exécute dans mon hôte et une session tmux dans l'invité. Est-il possible pour ma machine hôte d'accéder à la session tmux de l'invité et de faire des trucs sympas avec? (par exemple, envoyer des commandes à la session de l'invité)?

EnToutCas
la source

Réponses:

9

Un sujet connexe a été abordé dans la liste de diffusion tmux-users : Essayer d'utiliser socat pour tunneler le socket tmux

Résumé:

  • Le simple transfert du dialogue intra -bande sur le socket entre un client tmux et son serveur ne fonctionnera pas car tmux utilise le transfert de descripteur de fichier (le client transmet son tty fd au serveur).
    • Il serait peut-être possible de développer un proxy spécialisé, mais il semblerait que ce ne soit pas trivial - il faudrait en savoir assez sur le protocole de socket tmux pour savoir quand accepter et envoyer des fds, et il faudrait une méthode de fds et toutes les opérations effectuées sur ces fds.
  • L'affiche de la liste de diffusion a réussi à élaborer un tmux système de transfert en utilisant socat que la plupart du temps travaillé .
    • Vous pourriez probablement définir une taille de terminal initiale différente en donnant les options -xet -yà new-session, mais cela ne résoudrait pas le problème de la gestion du redimensionnement ( socat aurait besoin de gérer et de transférer SIGWINCH (via les ioctls TIOCGWINSZ / TIOCSWINSZ)).
    • Il semble que vous souhaitiez peut-être que votre «serveur de transfert» se trouve dans votre SE invité, mais la solution liée ferait en sorte que le serveur se trouve dans votre SE hôte. Vous pourriez probablement le retravailler pour qu'il en soit le contraire.

À moins qu'il y ait une raison pour laquelle vous ne pouvez pas exécuter un serveur SSH sur votre invité, il est probablement plus facile d'utiliser SSH pour vous connecter à votre invité (laissez les programmes SSH gérer la connexion sur le réseau et la gestion des ttys) et vous connecter à (ou émettre des commandes to) le résident tmux de cette façon:

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

Vous pouvez créer une clé SSH et des ~/.ssh/configentrées sur votre hôte pour simplifier les lignes de commande ssh (c'est-à-dire utiliser juste ssh guestau - dessus de ssh -i guest-user1-key user1@guest-vm-ip).

Chris Johnsen
la source
Je me demande si cela pourrait maintenant être construit en utilisant le mode de contrôle
tmux