Я использую tmux на своей локальной машине и обычно имею несколько сеансов одновременно.
Что я обычно делаю, так это сеанс с разными окнами для локальной работы и другие сеансы, в которых я подключаю несколько окон к одному хосту за сеанс.
Дерево сеанса / окна выглядело бы так при ежедневном использовании tmux:
(TMUX on my local machine)
|
+- session 1: local
| \_ window 1: local shell
| \_ window 2: local shell
| \_ ...
|
+ session 2: somehost
| \_ window1: ssh user@somehost
| \_ window2: ssh user@somehost
| \_ ...
|
+ session 3: someotherhost
\_ window1: ssh user@someotherhost
\_ window2: ssh user@someotherhost
\_ ...
Есть ли способ сделать сеанс 2 и сеанс 3 своего рода удаленными сеансами, соединяющимися с сеансом tmux, созданным на somehost и someotherhost?
Вышеуказанное дерево будет выглядеть так:
(TMUX on my local machine)
|
+- session 1: local
| \_ window 1: local shell
| \_ window 2: local shell
| \_ ...
|
+ session 2 linked to an existing session on somehost
| \_ window1: shell on somehost
| \_ window2: shell on somehost
| \_ ...
|
+ session 3 linked to an existing session on someotherhost
\_ window1: shell on someotherhost
\_ window2: shell on someotherhost
\_ ...
Я нашел эту тему, но я не уверен, что это то, что я хочу сделать: возможно ли совместное использование сокетов tmux между хостами?
Я предполагаю, что то, что я ищу, потребовало бы, чтобы у меня была та же самая конфигурация tmux на моей локальной машине, somehost и someotherhost, но это не было бы проблемой.
Ответы:
Вы можете передать команду ssh при подключении к удаленному хосту. Включите
-t
параметрtmux attach-session
для подключения к удаленному сеансу tmux:Этот пост о подключении к сеансу tmux через ssh объясняет это более подробно.
источник
ssh <remote host> -t /path/to/tmux a -t <my-session-name>
, нужен был дополнительный-t
Если ваша основная проблема заключается в том, что вы должны печатать
ssh remotehost
каждый раз, когда открываете новое окно,default-command
вариант сеанса может оказаться обходным путем.Он автоматически выполняет указанную вами команду при открытии новых окон в сеансах, на которые вы ее установили.
Простая настройка в
.tmux.conf
:bind-key C-r new-session ssh remotehost \; set-option default-command "ssh remotehost"
Эта привязка клавиш
Ctrl-r
создает новый сеанс, в котором каждое вновь открытое окно сначала выполняетсяssh remotehost
от вашего имени.Вы можете выбрать хосты для подключения во время создания сеанса с настройками ниже:
bind-key C-r command-prompt "new-session -s %1 ssh %1 \; set-option default-command \"ssh %1\""
Он запрашивает хост, который вы хотите сделать
ssh
при каждом создании сеанса (не при каждом создании окна), и запускает сеанс, выделенный этому хосту.Выполнение многих занимает мало времени,
ssh
если вы включили мультиплексирование SSH в вашей конфигурации ssh..ssh/config
Пример ниже:Обратите внимание, что этот параметр tmux не создает сеансы tmux на удаленных хостах. Если соединение ssh потеряно, затронутые окна tmux никогда не возвращаются.
источник
Вы можете использовать такой инструмент, как socat, для туннелирования сокета домена unix, используемого tmux, на вашу локальную машину. Но вы на самом деле просто меняете туннель (ssh) на другой (socat), так что это не очень хорошо, а также небезопасно.
источник
socat
через туннельssh
? 🙂tmate
может быть лучшим инструментом для удаленной обработки tmuxЕсли вы говорите об удаленной оболочке, вы имеете в виду, что можете выполнять команды там, другими словами, у вас есть прямой доступ. В этом случае вы можете просто использовать
ssh
соединение для каждого удаленного окна.Вы можете сказать там что-то вроде:
«Эй, но нет способа иметь несколько окон для каждого удаленного сервера!»
и это правда, из-за ограничений ssh. Но вы можете запустить сеанс tmux на каждом или на вашем удаленном сервере. ПРИМЕЧАНИЕ: в этом случае вам нужно перепривязать настройки
Ctrl+b
по умолчанию на локальном компьютере, чтобы предотвратить конфликты.Кроме того, я рекомендую вам использовать
tmuxinator
, это очень полезный инструмент, если вы ректеризуете сеанс tmux хотя бы каждый день.источник