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.)

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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.