是否可以在主机之间共享 tmux 套接字?

EnT*_*Cas 11 session sockets tmux

我想知道是否可以在不同主机之间共享 tmux 服务器套接字。例如,我有一个虚拟机(来宾)在我的主机内运行,我在来宾中运行 tmux 会话,我的主机是否可以访问来宾的 tmux 会话并用它做很酷的事情?(例如,向客人的会话发送命令)?

Chr*_*sen 10

tmux-users邮件列表上出现了一个相关主题:尝试使用 socat 来隧道 tmux 套接字

概括:

  • 简单地在tmux客户端与其服务器之间转发带内、通过套接字的对话是行不通的,因为tmux使用文件描述符传递(客户端将其 tty fd 传递给服务器)。
    • 开发一个专门的代理是可能的,但它似乎并不简单——它需要对tmux套接字协议有足够的了解才能知道何时接受和发送 fds,并且需要一种代理的方法fds 以及对这些 fds 进行的任何操作。
  • 邮件列表海报设法使用socat制定了一个tmux转发系统,该系统大部分都有效
    • 您可以通过为 提供-x-y选项来设置不同的初始终端大小new-session,但这不会修复调整大小处理(socat需要处理和转发 SIGWINCH(通过 TIOCGWINSZ/TIOCSWINSZ ioctls))。
    • 听起来您可能希望您的“转发服务器”位于您的来宾操作系统中,但链接的解决方案会使服务器位于您的主机操作系统中。你可能会重新设计它,让它反过来。

除非由于某些原因您不能在您的来宾上运行 SSH 服务器,否则使用 SSH 登录您的来宾可能更容易(让 SSH 程序处理网络连接和管理 tty)并附加到(或发出命令)以这种方式驻留tmux

host$ ssh guest tmux attach -t console
host$ ssh guest tmux new-session -s 'fiddling around'
# etc.
Run Code Online (Sandbox Code Playgroud)

您可以~/.ssh/config在主机上创建 SSH 密钥和条目以简化ssh命令行(即使用ssh guest上面的 代替ssh -i guest-user1-key user1@guest-vm-ip)。