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.)
ssh login@hostname -t 'tmux -CC attach'
i skorzystaj z menu shell-> tmux-> deski rozdzielczej w iterm2.ssh login@hostname -t 'tmux -CC a -t sessionName'
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:
Najpierw użyj
.ssh/config
na komputerze lokalnym i.ssh/authorized_keys
na komputerze zdalnym, aby skonfigurować logowanie do systemu zdalnego bez hasła. Po prawidłowym skonfigurowaniu powinieneś być w stanie zalogować się po prostu wykonującssh pi
(załóżmy, żepi
jest to nazwa hosta twojego zdalnego systemu).Utwórz nowy profil iTerm2, który zamiast logować się do lokalnej powłoki, wywołuje tylko
ssh pi
logowanie do zdalnego komputera. Aby to skonfigurować, przejdź do: Preferencje / Profile / + / Command.Command = "ssh pi"Otwórz okno iTerm2 na zdalnym komputerze za pomocą nowego profilu, wykonując: Profile / Pi.
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
ESC
w 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.
źródło
[[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exit
w .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. Naexit
końcu zamyka połączenie po wyjściu z tmux (głównie dla mnie odczep).