10

Мне интересно, возможно ли разделить сокет сервера tmux между разными хостами. Например, у меня на хосте запущена виртуальная машина (гость), и я запускаю сеанс tmux в госте, возможно ли, чтобы мой хост получил доступ к сеансу гостя tmux и делал с ним классные вещи? (например, отправка команд на сеанс гостя)?

1 ответ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).

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