Ist es möglich, tmux-Sockets zwischen Hosts zu teilen?

11

Ich frage mich, ob es möglich ist, einen tmux-Server-Socket zwischen verschiedenen Hosts zu teilen. Zum Beispiel habe ich eine virtuelle Maschine (Gast) in meinem Host und ich führe eine tmux-Sitzung im Gast aus. Ist es meiner Host-Maschine möglich, auf die tmux-Sitzung des Gastes zuzugreifen und coole Sachen damit zu machen? (z. B. Senden von Befehlen an die Sitzung des Gastes)?

EnToutCas
quelle

Antworten:

10

In der Mailingliste der tmux-Benutzer wurde ein verwandtes Thema angesprochen : Der Versuch, mit socat den tmux-Socket zu tunneln

Zusammenfassung:

  • Das einfache Weiterleiten des In-Band-Dialogs über den Socket zwischen einem tmux- Client und seinem Server funktioniert nicht, da tmux die Übergabe von Dateideskriptoren verwendet (der Client übergibt seinen tty fd an den Server).
    • Es könnte möglich sein, einen spezialisierten Proxy zu entwickeln, aber es scheint nicht trivial zu sein - es müsste genug über das tmux- Socket-Protokoll wissen, um zu wissen, wann fds akzeptiert und gesendet werden müssen, und es würde eine Methode zum Proxys des Proxys benötigen fds und alle Operationen, die an diesen fds ausgeführt werden.
  • Das Mailinglisten-Poster hat es geschafft, ein tmux- Weiterleitungssystem mit socat zu erarbeiten , das meistens funktionierte .
    • Sie könnten wahrscheinlich eine andere Anfangsklemmengröße durch die Angabe gesetzt -xund -yOptionen new-session, aber dies würde nicht fix Resize - Handling ( socat müßte Griff und nach vorne SIGWINCH (durch TIOCGWINSZ / TIOCSWINSZ ioctls)).
    • Es hört sich so an, als ob Sie möchten, dass sich Ihr „Weiterleitungsserver“ in Ihrem Gastbetriebssystem befindet, aber die verknüpfte Lösung würde dazu führen, dass sich der Server in Ihrem Hostbetriebssystem befindet. Sie könnten es wahrscheinlich überarbeiten, damit es umgekehrt funktioniert.

Sofern es keinen Grund gibt, warum Sie keinen SSH-Server auf Ihrem Gast ausführen können, ist es wahrscheinlich einfacher, sich mit SSH bei Ihrem Gast anzumelden (lassen Sie die SSH-Programme die Verbindung über das Netzwerk herstellen und die ttys verwalten) und an Verbindungen anzuhängen (oder Befehle auszugeben) zu) dem ansässigen tmux auf diese Weise:

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

Sie können einen SSH-Schlüssel und ~/.ssh/configEinträge auf Ihrem Host erstellen , um die ssh- Befehlszeilen zu vereinfachen (dh direkt ssh guestoben anstelle von ssh -i guest-user1-key user1@guest-vm-ip).

Chris Johnsen
quelle
Ich frage mich, ob dies jetzt im tmux-Steuermodus erstellt werden könnte
mndrix