7

Кажется, есть много связанных вопросов, но я хотел бы увидеть конкретный обходной путь.

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

Теперь я использую это также и локально. Есть ли способ аккуратно смешать две вещи? Я вижу только два варианта.

  • tmux на локальной и на удаленной машине (это мой текущий). Сессии полностью независимы, если мой локальный сбой, удаленный выживет и т. Д .; к сожалению, не может быть никакого взаимодействия, поэтому я должен забыть о сохранении истории копирования-вставки (поправьте меня, если я ошибаюсь) и подобных вещах.
  • SSH из локального Tmux и подключить к удаленному Tmux. Таким образом, у меня будет удаленный сеанс tmux внутри локального окна tmux, которое кажется чрезвычайно громоздким для ежедневного использования.

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

3 ответа3

2

Мой совет:

Используйте mosh для подключения к удаленному серверу, после запуска сеанса запустите tmux

mosh был создан для обычного, но менее апокалиптического сценария удаленного сеанса, соединяющегося через сотовый канал передачи данных, еще до того, как появился 3G.

Со страницы руководства mosh :

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

По сравнению с ssh, mosh более устойчивый - его соединения остаются в спящем режиме и изменяются в IP-адресе клиента - и более отзывчив, поскольку протокол допускает потерю пакетов, и клиент может немедленно повторить большинство нажатий клавиш, не ожидая обхода сети -поездка.

mosh использует ssh для установления соединения с удаленным хостом и аутентификации с помощью существующих средств (например, аутентификация с открытым ключом или пароль). mosh выполняет непривилегированную вспомогательную программу mosh-server на сервере, затем закрывает соединение SSH и запускает mosh-client, который устанавливает долгоживущее соединение дейтаграмм через UDP.

В те дни, если вы использовали свой ноутбук для входа на сервер ssh, например, в пригородном поезде, используя модем CDMA « pc-card » на своей ослепительно быстрой Compaq Armada (OMG Pentium!), Или используя последовательный порт кабель для подключения той ладони VII, у которой была какая-то услуга передачи данных; Вы будете отключать сеанс каждый раз, когда переключаетесь с одной радиоячейки на другую, что в пригородном поезде может происходить каждые 3-5 минут.

Это был бы эквивалентный сценарий того, как старый Советский Союз пролил плутоний вдоль пути поезда с точки зрения соединения ...

mosh чтобы спасти. Он использует ssh для аутентификации, но остальная часть сеанса обрабатывается туннелем mosh, который был специально разработан для устойчивости сеанса на нестабильных каналах.

С точки зрения пользователя, сегодня это незаметно. Я все еще использую его для ssh, er ... mosh с моего устройства Android, использующего termux хотя ссылки на 4G больше не имеют этой проблемы.

Другим частым случаем использования были ssh-соединения через ненадежные модемные соединения через POTS, которые могли бы прервать сеанс, если бы ваша сестра решила, что она хотела бы позвонить своему парню, и подняла другой фиксированный телефон в доме, даже если вы предупредили ее, что загружать новый альбом U2 в формате MP3 с теневого сайта WaReZ.

Так что, если вы хотите использовать это, установите mosh с помощью диспетчера пакетов вашего дистрибутива как на сервере, так и на клиенте (не требуя root ни на одном из них, он установит пользовательскую среду, если не сможет получить root, удобно для устройств Android), а затем выполните :

terminus:~>> mosh trantor.mydoman.tld tmux
Last login: Wed Apr  4 21:27:38 2018 from XX.XXX.XXX.XXX
trantor:~>> 

Наслаждайтесь! знак равно

1

совместное использование окон поможет?

tmux new-session -s shared "tmux new-window -n CoolName"
tmux link-window -s <src-window> -t <dst-window>
tmux link-window -s shared:CoolName -t $index#  (target is optional)
0

На https://medium.freecodecamp.org/tmux-in-practice-local-and-nested-remote-tmux-sessions-4f7ba5db8795 есть несколько идей, как это сделать в tmux. В основном используйте ключ для переключения доступа к внутреннему tmux.

Конфигурация, которая работала для меня, была на http://stahlke.org/dan/tmux-nested/:

unbind C-b
set -g prefix C-a

set -g status-bg colour40
setw -g window-status-current-bg colour40

bind -n C-t new-window -a
bind -n S-left  prev
bind -n S-right next
bind -n S-C-left  swap-window -t -1
bind -n S-C-right swap-window -t +1

bind -n M-F11 set -qg status-bg colour25
bind -n M-F12 set -qg status-bg colour40
bind -n S-up \
    send-keys M-F12 \; \
    set -qg status-bg colour25 \; \
    unbind -n S-left \; \
    unbind -n S-right \; \
    unbind -n S-C-left \; \
    unbind -n S-C-right \; \
    unbind -n C-t \; \
    set -qg prefix C-b
bind -n S-down \
    send-keys M-F11 \; \
    set -qg status-bg colour40 \; \
    bind -n S-left  prev \; \
    bind -n S-right next \; \
    bind -n S-C-left swap-window -t -1 \; \
    bind -n S-C-right swap-window -t +1 \; \
    bind -n C-t new-window -a -c "#{pane_current_path}" \; \
    set -qg prefix C-a

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .