Назад | Перейти на главную страницу

Отправить команду tmux с удаленного внутри сеанса ssh на локальный экземпляр

Цель состоит в том, чтобы отправить команду tmux на локальный запущенный tmux с удаленного сервера. не запускать разные экземпляры tmux.

Внутри tmux мы отправляем ssh на сервер, на котором не работает tmux

local>tmux send-key C-p  # works
local>ssh user@remote
user@remote> tmux send-key C-p # this will try to find tmux instance on remote. but we want to send it the local instead.

Я не могу использовать привязку клавиш, потому что это будет выполняться изнутри скрипта.

Дистрибутив или версия Linux не указаны, поэтому в этом ответе предполагается относительно новая версия SSH.

Если сокет tmux "по умолчанию" используется на локальном хосте, но не на удаленном хосте, tmux должен просто работать, перенаправляя сокет unix с удаленного хоста:

ssh -R/tmp/tmux-$UID/default:/tmp/tmux-${REMOTE_UID}/default remote

REMOTE_UID должен быть установлен вручную на UID удаленного пользователя, но UID обычно устанавливается автоматически в среде.

В идеале следует выбрать уникальное (не по умолчанию) имя сокета tmux, чтобы избежать конфликтов:

local> tmux -L foo
remote> ssh -R/tmp/tmux-$UID/foo:/tmp/tmux-${REMOTE_UID}/foo remote
remote> tmux -L foo send-key C-p

Играя с TMUX_TMPDIR окружающая среда может дать более прозрачный и безупречный опыт и обойти необходимость знать UID, но это зависит от требований и может быть излишним для одного скрипта.