Ich verwende tmux auf meinem lokalen Rechner und habe normalerweise mehrere Sitzungen gleichzeitig.
Normalerweise habe ich eine Sitzung mit verschiedenen Fenstern, um lokal zu arbeiten, und die anderen Sitzungen, in denen ich mehrere Fenster mit einem Host pro Sitzung verbinde.
Ein Session / Window Tree würde im täglichen Gebrauch von tmux so aussehen:
(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
\_ ...
Gibt es eine Möglichkeit, Session 2 & Session 3 zu einer Art Fernsitzung zu machen, die eine Verbindung zu einer auf einem & einem anderen Host erstellten tmux-Sitzung herstellt?
Der obige Baum würde so aussehen:
(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
\_ ...
Ich habe dieses Thema gefunden, bin mir aber nicht sicher, was ich tun möchte: Ist die gemeinsame Nutzung eines tmux-Sockets zwischen Hosts möglich?
Ich nehme an, was ich suche, würde erfordern, dass ich die gleiche tmux-Konfiguration auf meinem lokalen Rechner habe, irgendwo und irgendwo anders, aber das wäre kein Problem.
Antworten:
Sie können einen Befehl an ssh übergeben, wenn Sie eine Verbindung zu einem Remote-Host herstellen. Fügen Sie die
-t
Option hinzu, mit dertmux attach-session
eine Verbindung zur Remote-TMUX-Sitzung hergestellt werden soll:In diesem Beitrag zum Anhängen an eine tmux-Sitzung über ssh wird dies näher erläutert.
quelle
ssh <remote host> -t /path/to/tmux a -t <my-session-name>
, brauchte eine zusätzliche-t
Sie können ein Tool wie socat verwenden, um den von tmux verwendeten Unix-Domain-Socket auf Ihren lokalen Rechner zu tunneln. Aber Sie tauschen wirklich nur einen Tunnel (ssh) gegen einen anderen (socat) aus, damit es nicht wirklich besser und auch unsicher ist.
quelle
socat
durchssh
? 🙂tmate
stelle könnte das beste tool für remote tmux handling seinWenn Ihr Hauptproblem darin besteht, dass Sie bei
ssh remotehost
jedem Öffnen eines neuen Fensters etwas eingeben müssen, kann diedefault-command
Sitzungsoption eine Problemumgehung sein.Der von Ihnen angegebene Befehl wird automatisch ausgeführt, wenn Sie in den Sitzungen, für die Sie ihn festgelegt haben, neue Fenster öffnen.
Eine einfache Einstellung in
.tmux.conf
:bind-key C-r new-session ssh remotehost \; set-option default-command "ssh remotehost"
Diese Schlüsselbindung
Ctrl-r
erstellt eine neue Sitzung, in der jedes neu geöffnete Fenster zuerstssh remotehost
für Sie ausgeführt wird.Mit den folgenden Einstellungen können Sie Hosts auswählen, die zur Zeit der Sitzungserstellung verbunden werden sollen:
bind-key C-r command-prompt "new-session -s %1 ssh %1 \; set-option default-command \"ssh %1\""
Dieser fragt Sie nach dem Host, den Sie
ssh
bei jeder Sitzungserstellung (nicht bei jeder Fenstererstellung) ausführen möchten, und startet die diesem Host gewidmete Sitzung.Die Ausführung vieler
ssh
Befehle nimmt nur wenig Zeit in Anspruch, wenn Sie das SSH-Multiplexing in Ihrer ssh-Konfiguration aktivieren. Das.ssh/config
Beispiel ist unten:Beachten Sie, dass diese tmux-Einstellung keine tmux-Sitzungen auf Remote-Hosts erstellt. Wenn die ssh-Verbindung unterbrochen wird, kehren die betroffenen tmux-Fenster niemals zurück.
quelle
Wenn Sie von Remote-Shell sprechen, meinen Sie, dass Sie dort Befehle ausführen können, dh Sie haben direkten Zugriff. In diesem Fall können Sie die
ssh
Verbindung einfach für jedes Remote-Fenster verwenden.Sie können dort etwas sagen wie:
"Hey, aber es gibt keine Möglichkeit, mehrere Fenster für jeden Remote-Server zu haben!"
und es ist wahr, aufgrund von SSH-Einschränkungen. Sie können die tmux-Sitzung jedoch auf jedem oder auf Ihrem Remote-Server starten. HINWEIS: In diesem Fall müssen Sie die Standardeinstellung
Ctrl+b
auf dem lokalen Computer erneut binden , um Kollisionen zu vermeiden.Auch ich empfehle Ihnen zu verwenden
tmuxinator
, es ist sehr hilfreich, wenn Sie Ihre tmux-Sitzung mindestens jeden Tag neu erstellen.quelle