В списке рассылки tmux-users появилась похожая тема : Попытка использовать socat для туннелирования сокета tmux.
Резюме:
- Простая пересылка внутриполосного диалога через сокет между клиентом tmux и его сервером не будет работать, потому что tmux использует передачу дескриптора файла (клиент передает свой tty fd на сервер).
- Можно было бы разработать специализированный прокси-сервер, но, похоже, это было бы нетривиально - ему нужно было бы знать достаточно протокола сокета tmux , чтобы знать, когда принимать и отправлять fds, и для этого нужен метод прокси FDS и любые операции, выполненные на этих FDS.
- Постеру списка рассылки удалось разработать систему пересылки tmux с использованием socat, который в основном работал .
- Вы могли бы задать другой начальный терминальный размер, давая
-x
и -y
варианты new-session
, но это будет не исправить обработку изменения размера ( Сокат должны были бы ручки и вперед SIGWINCH (через TIOCGWINSZ / TIOCSWINSZ IOCTLs)).
- Похоже, вы хотите, чтобы ваш «сервер пересылки» был в вашей гостевой ОС, но связанное решение заставит сервер быть в вашей хост-ОС. Вы могли бы, вероятно, переделать его, чтобы все было наоборот.
Если нет какой-либо причины, по которой вы не можете запустить сервер 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
).