Удаленный сервер, интеграция с iTerm2 и tmux

30

Я хочу иметь возможность запустить сеанс tmux на удаленном сервере, а затем использовать собственные окна iTerm2 и разделенные экраны на моей локальной машине.

Например, предположим, что на моем удаленном сервере запущен сеанс tmux с одним окном с двумя панелями. В iTerm2 на моем локальном компьютере я хочу две собственные панели iTerm2, чтобы каждая панель содержала разные панели tmux.

Это возможно?

(Я знаю, что возможно обратное - когда я могу запустить сеанс tmux на моей локальной машине, а другая машина увидит мои вкладки iTerm2 в качестве окон, например. Но это кажется бесполезным.)

Ник
источник

Ответы:

40

Да, это возможно, но убедитесь, что:

  • Чтобы последняя версия tmux была установлена ​​удаленно
  • Самая последняя версия iterm2 установлена ​​локально

Войдите через ssh login@hostname -t 'tmux -CC'и вуаля - это должно открыть окно iTerm2 на вашем локальном ящике, вошедшем в удаленный ящик.

user2046612
источник
5
также не забудьте о повторном подключении для использования ssh login@hostname -t 'tmux -CC attach'и загляните в меню shell-> tmux-> dashboard в iterm2.
Therealmarv
1
Эй, ребята, вы знаете, как это сделать с помощью mosh вместо ssh? редактировать: это невозможно: github.com/mobile-shell/mosh/issues/640
fane89
1
Если вы хотите подключиться и присоединиться к определенному сеансу, вы можете использовать следующее:ssh login@hostname -t 'tmux -CC a -t sessionName'
Джереми Иглхарт
есть ли шанс заставить его работать с autossh или как-то заставить его сопротивляться отключениям?
игорь
4

Вот что сработало для меня со стабильными версиями на 2015-12-16, которые являются iTerm 2.1.4 для OS X 10.11.2 и tmux 1.9 для Raspbian Linux:

  1. Сначала используйте .ssh/configна локальном компьютере и .ssh/authorized_keysна удаленном компьютере, чтобы настроить беспарольный вход в удаленную систему. Как только это будет правильно настроено, вы сможете войти в систему, просто выполнив ssh pi(предположим, piэто имя хоста вашей удаленной системы).

  2. Создайте новый профиль iTerm2, который вместо входа в локальную оболочку вызывает только ssh piвход на удаленный компьютер. Чтобы настроить это, перейдите: Preferences / Profiles / + / Command.Command = "ssh pi"

  3. Откройте окно iTerm2 для удаленного компьютера через новый профиль, выполнив: Профили / Pi.

  4. В окне удаленного входа 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.

водорослевые
источник
Для автоматического подключения к запущенному сеансу tmux при входе в систему через ssh, который я использую [[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exitв .bashrc (или из того, что вызывается оттуда) файл. В exitконце закрывает соединение при выходе из tmux (в основном это отключение для меня).
Zany