Я хочу иметь возможность запустить сеанс tmux на удаленном сервере, а затем использовать собственные окна iTerm2 и разделенные экраны на моей локальной машине.
Например, предположим, что на моем удаленном сервере запущен сеанс tmux с одним окном с двумя панелями. В iTerm2 на моем локальном компьютере я хочу две собственные панели iTerm2, чтобы каждая панель содержала разные панели tmux.
Это возможно?
(Я знаю, что возможно обратное - когда я могу запустить сеанс tmux на моей локальной машине, а другая машина увидит мои вкладки iTerm2 в качестве окон, например. Но это кажется бесполезным.)
ssh login@hostname -t 'tmux -CC attach'
и загляните в меню shell-> tmux-> dashboard в iterm2.ssh login@hostname -t 'tmux -CC a -t sessionName'
Вот что сработало для меня со стабильными версиями на 2015-12-16, которые являются iTerm 2.1.4 для OS X 10.11.2 и tmux 1.9 для Raspbian Linux:
Сначала используйте
.ssh/config
на локальном компьютере и.ssh/authorized_keys
на удаленном компьютере, чтобы настроить беспарольный вход в удаленную систему. Как только это будет правильно настроено, вы сможете войти в систему, просто выполнивssh pi
(предположим,pi
это имя хоста вашей удаленной системы).Создайте новый профиль iTerm2, который вместо входа в локальную оболочку вызывает только
ssh pi
вход на удаленный компьютер. Чтобы настроить это, перейдите: Preferences / Profiles / + / Command.Command = "ssh pi"Откройте окно iTerm2 для удаленного компьютера через новый профиль, выполнив: Профили / Pi.
В окне удаленного входа iTerm2, в командной строке выполните:
tmux -CC
. После этого ваше окно iTerm2 показывает режим команд tmux, tmux создает новый сеанс, и iTerm2 немедленно создает новое окно iTerm2 для этого сеанса tmux. В этом новом окне iTerm2 начальная вкладка iTerm2 представляет одно окно tmux этого сеанса. Если вы выполните CMD-T, это создаст новую вкладку iTerm2, представляющую новое окно tmux.Как вы используете это?
На этом этапе вы можете использовать «Shell / tmux / Dashboard», чтобы наблюдать за пониманием iTerm2 существующих сеансов и окон tmux.
Если вы закроете окно iTerm2, представляющее сеанс tmux, оно уничтожит базовый сеанс и все его окна tmux.
Если вы закроете окно iTerm2, в котором отображается командный режим tmux, то, похоже, он просто убивает экземпляр клиента tmux, который был подключен к этому сеансу, поэтому оба окна iTerm2 исчезают, но сеанс tmux все еще жив, и вы можете повторно присоединиться к Это.
Если вы хотите более аккуратно отсоединиться от tmux, просто сделайте это
ESC
в окне командного режима tmux.Если вместо создания нового сеанса tmux изначально вы хотели присоединить существующий сеанс, то вы можете сделать это с помощью
tmux -CC attach
.Теоретически, я думаю, что должен быть способ настроить iTerm2 или tmux, чтобы при подключении к удаленной системе вы автоматически подключались к любому существующему сеансу tmux, но я не смог заставить это работать, изменив командную строку в профиль iTerm2.
источник
[[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exit
в .bashrc (или из того, что вызывается оттуда) файл. Вexit
конце закрывает соединение при выходе из tmux (в основном это отключение для меня).