Інтеграція віддаленого сервера, iTerm2 та tmux


30

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

Наприклад, скажімо, що мій віддалений сервер має сесію tmux, що працює з одним вікном, яке має дві області. У iTerm2 на своїй локальній машині я хочу мати дві нативні панелі iTerm2, щоб кожна панель містила іншу панель tmux.

Чи можливо це?

(Я знаю, що можливе зворотне середовище - завдяки якому я можу запустити сеанс tmux на своїй локальній машині, а інша машина побачить мої вкладки iTerm2 як, наприклад, вікна. Але це видається марним.)

Відповіді:


40

Так, можливо, переконайтесь:

  • Мати віддалену версію tmux
  • Майте локальну версію найновішої версії iterm2

Увійти через ssh login@hostname -t 'tmux -CC'і voilà - це має відкрити вікно iTerm2 у вашому локальному вікні, увійшло у віддалене вікно.


5
також не забудьте при повторному підключенні використовувати ssh login@hostname -t 'tmux -CC attach'та заглянути в меню панелі оболонок-> tmux-> панелі в iterm2.
therealmarv

1
Ей, ви, хлопці, знаєте, як це зробити з mosh замість ssh? редагувати: неможливо: github.com/mobile-shell/mosh/isissue/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 на віддаленій машині через новий профіль, виконавши: Profiles / Pi.

  4. У вікні віддаленого входу iTerm2, в командному рядку виконайте: tmux -CC. Після цього у вашому вікні iTerm2 відображається командний режим tmux, tmux створює новий сеанс, а iTerm2 негайно створює нове вікно iTerm2 для цього сеансу tmux. У цьому новому вікні iTerm2 початкова вкладка iTerm2 являє собою єдине вікно tmux цього сеансу. Якщо ви робите CMD-T, це створить нову вкладку iTerm2, що представляє нове вікно tmux.

Як ти цим користуєшся?

  • У цей момент ви можете зробити "Shell / tmux / Dashboard", щоб дотримуватися розуміння iTerm2 існуючих сесій tmux та windows.

  • Якщо ви закриєте вікно 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 (або щось, що викликається звідти) Тести призначені для: інтерактивної оболонки, сеансу ssh, ще не запущеного в tmux, жодного надзвичайного дон-до-це. файл. В exitкінці закривається з'єднання після виходу з tmux (в основному для мене від'єднання).
zany
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.