Мне интересно, возможно ли разделить сокет сервера tmux между разными хостами. Например, у меня на хосте запущена виртуальная машина (гость), и я запускаю сеанс tmux в госте, возможно ли, чтобы мой хост получил доступ к сеансу гостя tmux и делал с ним классные вещи? (например, отправка команд на сеанс гостя)?
1 ответ
8
В списке рассылки tmux-users появилась похожая тема: Попытка использовать socat для туннелирования сокета tmux.
Резюме:
- Простая пересылка внутриполосного диалогового окна через сокет между клиентом tmux и его сервером не будет работать, потому что tmux использует передачу дескриптора файла (клиент передает свой tty fd на сервер).
- Может быть возможно разработать специализированный прокси-сервер, но кажется, что это было бы нетривиально - ему нужно было бы знать достаточно протокола сокета tmux , чтобы знать, когда принимать и отправлять fds, и для этого нужен метод прокси FDS и любые операции, выполненные на этих FDS.
- Постеру списка рассылки удалось разработать систему пересылки tmux с использованием socat, который в основном работал.
- Возможно, вы могли бы установить другой начальный размер терминала, задав параметры
-x
и-y
дляnew-session
, но это не исправит обработку изменения размера (socat должен будет обрабатывать и пересылать SIGWINCH (через ioctls TIOCGWINSZ/TIOCSWINSZ)). - Похоже, вы хотите, чтобы ваш «сервер пересылки» был в вашей гостевой ОС, но связанное решение заставит сервер быть в вашей хост-ОС. Вы могли бы, вероятно, переделать его, чтобы все было наоборот.
- Возможно, вы могли бы установить другой начальный размер терминала, задав параметры
Если нет какой-либо причины, по которой вы не можете запустить сервер SSH на своем госте, возможно, проще использовать SSH для входа в систему вашего гостя (пусть программы SSH обрабатывают подключение по сети и управление ttys) и подключаться к ним (или выдавать команды) к) резидент tmux таким образом:
host$ ssh guest tmux attach -t console
host$ ssh guest tmux new-session -s 'fiddling around'
# etc.
Вы можете создать ключ SSH и записи ~/.ssh/config
на своем хосте, чтобы упростить командные строки ssh (т. Е. Использовать только ssh guest
вместо ssh -i guest-user1-key user1@guest-vm-ip
).