Remote-Server-, iTerm2- und TMUX-Integration

30

Ich möchte in der Lage sein, eine tmux-Sitzung auf einem Remote-Server zu starten und dann die systemeigenen Fenster und geteilten Bildschirme von iTerm2 auf meinem lokalen Computer zu verwenden.

Angenommen, auf meinem Remote-Server wird eine tmux-Sitzung mit einem Fenster mit zwei Fenstern ausgeführt. In iTerm2 auf meinem lokalen Computer möchte ich zwei native iTerm2-Bereiche, sodass jeder Bereich einen anderen tmux-Bereich enthält.

Ist das möglich?

(Ich weiß, dass das Gegenteil möglich ist - wobei ich eine tmux-Sitzung auf meinem lokalen Computer ausführen kann und ein anderer Computer meine iTerm2-Registerkarten zum Beispiel als Fenster ansieht. Dies scheint jedoch irgendwie nutzlos zu sein.)

Nick
quelle

Antworten:

40

Ja, es ist möglich, aber stellen Sie sicher:

  • Damit die neueste Version von tmux remote installiert wird
  • Habe die neueste Version von iterm2 lokal installiert

Anmelden über ssh login@hostname -t 'tmux -CC'und voilà - dies sollte das iTerm2-Fenster auf Ihrer lokalen Box öffnen, die bei der Remote-Box angemeldet ist.

user2046612
quelle
5
Vergessen Sie auch nicht, beim erneuten ssh login@hostname -t 'tmux -CC attach'Herstellen der Verbindung das Menü shell-> tmux-> dashboard in iterm2 zu verwenden und zu überprüfen.
Therealmarv
1
Hey, wisst ihr, wie man es mit mosh anstelle von ssh macht? edit: es ist nicht möglich: github.com/mobile-shell/mosh/issues/640
fane89
1
Wenn Sie eine Verbindung herstellen und eine Verbindung zu einer bestimmten Sitzung herstellen möchten, können Sie Folgendes verwenden:ssh login@hostname -t 'tmux -CC a -t sessionName'
Jeremy Iglehart
Gibt es eine Chance, es mit autossh zum Laufen zu bringen oder es irgendwie dazu zu bringen, Trennungen zu widerstehen?
igor
4

Folgendes hat bei mir mit den stabilen Release-Versionen vom 16.12.2015 funktioniert: iTerm 2.1.4 unter OS X 10.11.2 und tmux 1.9 unter Raspbian Linux:

  1. Verwenden Sie zunächst .ssh/configauf Ihrem lokalen Computer und .ssh/authorized_keysauf Ihrem Remote-Computer, um die Anmeldung ohne Kennwort für das Remote-System zu konfigurieren. Sobald dies richtig konfiguriert ist, sollten Sie sich anmelden können ssh pi(vorausgesetzt, es pihandelt sich um den Hostnamen Ihres Remote-Systems).

  2. Erstellen Sie ein neues iTerm2-Profil, bei dem Sie sich nicht bei Ihrer lokalen Shell anmelden, sondern nur ssh pibei der Remote-Maschine anmelden müssen. Um dies zu konfigurieren, gehen Sie zu: Preferences / Profiles / + / Command.Command = "ssh pi"

  3. Öffnen Sie über Ihr neues Profil ein iTerm2-Fenster für den Remote-Computer. Gehen Sie dazu wie folgt vor: Profile / Pi.

  4. Im iTerm2 Remote - Login - Fenstern, in der Befehlszeile tun: tmux -CC. Danach zeigt Ihr iTerm2-Fenster den tmux-Befehlsmodus an, tmux erstellt eine neue Sitzung und iTerm2 erstellt sofort ein neues iTerm2-Fenster für diese tmux-Sitzung. Innerhalb dieses neuen iTerm2-Fensters repräsentiert die anfängliche iTerm2-Registerkarte das einzelne tmux-Fenster dieser Sitzung. Wenn Sie CMD-T ausführen, wird eine neue iTerm2-Registerkarte erstellt, die ein neues tmux-Fenster darstellt.

Wie benutzt du das?

  • Zu diesem Zeitpunkt können Sie "Shell / tmux / Dashboard" ausführen, um das Verständnis von iTerm2 für die vorhandenen tmux-Sitzungen und -Fenster zu beobachten.

  • Wenn Sie das iTerm2-Fenster schließen, das die tmux-Sitzung darstellt, werden die zugrunde liegende Sitzung und alle tmux-Fenster beendet.

  • Wenn Sie das iTerm2-Fenster schließen, in dem der tmux-Befehlsmodus angezeigt wird, wird anscheinend nur die mit dieser Sitzung verbundene tmux-Client-Instanz beendet, sodass beide iTerm2-Fenster ausgeblendet werden, die tmux-Sitzung jedoch noch aktiv ist und Sie eine erneute Verbindung herstellen können es.

  • Wenn Sie eine geordnetere Trennung von tmux wünschen, tun Sie dies einfach ESCim tmux-Befehlsmodusfenster.

  • Wenn Sie ursprünglich keine neue tmux-Sitzung erstellen wollten, sondern an eine vorhandene Sitzung anhängen möchten, können Sie dies mit tun tmux -CC attach.

Theoretisch sollte es eine Möglichkeit geben, iTerm2 oder tmux so zu konfigurieren, dass Sie beim Herstellen einer Verbindung mit dem Remote-System automatisch mit einer vorhandenen tmux-Sitzung verbunden werden. Dies gelang mir jedoch nicht, indem Sie die Befehlszeile in ändern das iTerm2-Profil.

Algen
quelle
Zum automatischen Herstellen einer Verbindung zu einer laufenden tmux-Sitzung bei der SSH-Anmeldung verwende ich [[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exitin .bashrc (oder etwas, das von dort aufgerufen wird) Datei. Das exitam Ende schließt die Verbindung beim Beenden von tmux (meistens eine Trennung für mich).
Zany