Integracja ze zdalnym serwerem, iTerm2 i tmux

30

Chcę móc rozpocząć sesję tmux na zdalnym serwerze, a następnie korzystać z natywnych okien i podzielonych ekranów iTerm2 na moim komputerze lokalnym.

Załóżmy na przykład, że mój zdalny serwer ma uruchomioną sesję Tmux z jednym oknem, które ma dwa panele. W iTerm2 na moim komputerze lokalnym chcę dwa natywne panele iTerm2, tak aby każdy panel zawierał inny panel tmux.

czy to możliwe?

(Wiem, że odwrotność jest możliwa - dzięki czemu mogę uruchomić sesję tmux na moim komputerze lokalnym, a inna maszyna zobaczy na przykład moje zakładki iTerm2 jako okna. Ale to wydaje się trochę bezużyteczne.)

Nacięcie
źródło

Odpowiedzi:

40

Tak, jest to możliwe, jut upewnij się:

  • Aby zdalnie zainstalować najnowszą wersję tmux
  • Zainstaluj najnowszą wersję iterm2 lokalnie

Zaloguj się przez ssh login@hostname -t 'tmux -CC'i voilà - powinno to otworzyć okno iTerm2 na lokalnej skrzynce zalogowanej w zdalnej skrzynce.

użytkownik2046612
źródło
5
nie zapomnij również o ponownym połączeniu ssh login@hostname -t 'tmux -CC attach'i skorzystaj z menu shell-> tmux-> deski rozdzielczej w iterm2.
therealmarv
1
hej, czy wiecie jak to zrobić z mosh zamiast ssh? edycja: nie jest możliwe: github.com/mobile-shell/mosh/issues/640
fane89
1
Jeśli chcesz się połączyć i dołączyć do konkretnej sesji, możesz użyć następujących opcji:ssh login@hostname -t 'tmux -CC a -t sessionName'
Jeremy Iglehart
jest jakaś szansa, aby działał z autossh lub w jakiś sposób sprawiał, że jest odporny na rozłączenia?
Igor
4

Oto, co zadziałało dla mnie w wersjach stabilnych z 2015-12-16, którymi są iTerm 2.1.4 na OS X 10.11.2 i tmux 1.9 na Raspbian Linux:

  1. Najpierw użyj .ssh/configna komputerze lokalnym i .ssh/authorized_keysna komputerze zdalnym, aby skonfigurować logowanie do systemu zdalnego bez hasła. Po prawidłowym skonfigurowaniu powinieneś być w stanie zalogować się po prostu wykonując ssh pi(załóżmy, że pijest to nazwa hosta twojego zdalnego systemu).

  2. Utwórz nowy profil iTerm2, który zamiast logować się do lokalnej powłoki, wywołuje tylko ssh pilogowanie do zdalnego komputera. Aby to skonfigurować, przejdź do: Preferencje / Profile / + / Command.Command = "ssh pi"

  3. Otwórz okno iTerm2 na zdalnym komputerze za pomocą nowego profilu, wykonując: Profile / Pi.

  4. W oknie zdalnego logowania iTerm2, w wierszu polecenia należy: tmux -CC. Następnie okno iTerm2 pokazuje tryb polecenia tmux, tmux tworzy nową sesję, a iTerm2 natychmiast tworzy nowe okno iTerm2 dla tej sesji tmux. W nowym oknie iTerm2 początkowa karta iTerm2 reprezentuje pojedyncze okno tmux tej sesji. Jeśli wykonasz CMD-T, utworzy to nową zakładkę iTerm2, reprezentującą nowe okno tmux.

Jak tego używasz?

  • W tym momencie możesz zrobić „Shell / tmux / Dashboard”, aby obserwować zrozumienie przez iTerm2 istniejących sesji i okien tmux.

  • Jeśli zamkniesz okno iTerm2 reprezentujące sesję tmux, zabija ono sesję bazową i wszystkie okna tmux.

  • Jeśli zamkniesz okno iTerm2 pokazujące tryb komend tmux, wydaje się, że po prostu zabija ono instancję klienta tmux, która była połączona z tą sesją, więc oba okna iTerm2 znikają, ale sesja tmux wciąż żyje i możesz ponownie dołączyć to.

  • Jeśli chcesz bardziej uporządkowanego odłączyć od tmux, po prostu zrób to ESCw oknie trybu komend tmux.

  • Jeśli zamiast tworzyć nową sesję tmux, pierwotnie chciałeś dołączyć do istniejącej sesji, możesz to zrobić za pomocą tmux -CC attach.

Teoretycznie myślę, że powinien istnieć sposób na skonfigurowanie iTerm2 lub tmux, aby po połączeniu się ze zdalnym systemem automatycznie łączył się z każdą istniejącą sesją tmux, ale nie byłem w stanie tego uruchomić, modyfikując wiersz poleceń w profil iTerm2.

glon
źródło
Aby automatycznie połączyć się z działającą sesją tmux przy logowaniu ssh, używam [[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exitw .bashrc (lub coś, co jest stamtąd wywoływane) Testy dotyczą: interaktywnej powłoki, sesji ssh, jeszcze nie uruchomionej w tmux, bez awaryjnego dont-do-it plik. Na exitkońcu zamyka połączenie po wyjściu z tmux (głównie dla mnie odczep).
zany