我在本地机器上使用 tmux,通常同时有多个会话。
我通常做的是我有一个不同窗口的会话在本地工作,而在其他会话中我将多个窗口连接到每个会话的一个主机。
在我使用 tmux 的日常使用中,会话/窗口树看起来像这样:
(TMUX on my local machine)
|
+- session 1: local
| \_ window 1: local shell
| \_ window 2: local shell
| \_ ...
|
+ session 2: somehost
| \_ window1: ssh user@somehost
| \_ window2: ssh user@somehost
| \_ ...
|
+ session 3: someotherhost
\_ window1: ssh user@someotherhost
\_ window2: ssh user@someotherhost
\_ ...
Run Code Online (Sandbox Code Playgroud)
有没有办法让会话 2 和会话 3 某种远程会话连接到在某个主机和某个主机上创建的 tmux 会话?
上面的树看起来像这样:
(TMUX on my local machine)
|
+- session 1: local
| \_ window 1: local shell
| \_ window 2: local shell
| \_ ...
|
+ session 2 linked to an existing session on somehost
| \_ window1: shell on somehost
| \_ window2: shell on somehost
| \_ ...
|
+ session 3 linked to an existing session on someotherhost
\_ window1: shell on someotherhost
\_ window2: shell on someotherhost
\_ ...
Run Code Online (Sandbox Code Playgroud)
我找到了这个主题,但我不确定这是我想要做的:是否可以在主机之间共享 tmux 套接字?
我想我正在寻找的东西要求我在本地机器上具有相同的 tmux 配置,somehost 和 someotherhost 但这不是问题。
小智 26
您可以在连接到远程主机时向 ssh 传递命令。包括连接到远程 tmux 会话的-t
选项tmux attach-session
:
ssh <remote host> -t tmux attach-session
Run Code Online (Sandbox Code Playgroud)
这篇关于通过 ssh 附加到 tmux 会话的帖子更详细地解释了它。
ssh remotehost
如果您的主要问题是每次打开新窗口时都必须键入,default-command
则会话选项可能是一种解决方法。
当您在设置的会话中打开新窗口时,它会自动执行您指定的命令。
一个简单的设置.tmux.conf
:
bind-key C-r new-session ssh remotehost \; set-option default-command "ssh remotehost"
此键绑定Ctrl-r
创建一个新会话,其中每个新打开的窗口首先ssh remotehost
代表您执行。
您可以使用以下设置选择在会话创建时连接的主机:
bind-key C-r command-prompt "new-session -s %1 ssh %1 \; set-option default-command \"ssh %1\""
这会询问您在每个会话创建时(而不是在每个窗口创建时)想要执行的主机操作ssh
,并启动专用于该主机的会话。
ssh
如果您在 ssh 配置中启用 SSH 多路复用,则执行许多操作只需很少的时间。示例.ssh/config
如下:
Host remotehost
ControlMaster auto
ControlPath ~/.ssh/mux-%r@%h:%p
ControlPersist 10
Run Code Online (Sandbox Code Playgroud)
请注意,此 tmux 设置不会在远程主机中创建 tmux 会话。如果 ssh 连接丢失,受影响的 tmux 窗口将永远不会返回。
小智 1
如果您谈论远程 shell,则意味着您可以在那里执行命令,换句话说,您可以直接访问。在这种情况下,您可以简单地ssh
对每个远程窗口使用连接。
你可以这样说:
“嘿,但是不可能为每个远程服务器拥有多个窗口!”
由于 ssh 限制,确实如此。但是,您可以在每个服务器或您的远程服务器上启动 tmux 会话。注意:在这种情况下,您需要Ctrl+b
在本地计算机上重新绑定默认值以防止冲突。
我还建议您使用tmuxinator
,如果您至少每天都重新进行 tmux 会话,那么它是非常有用的工具。
归档时间: |
|
查看次数: |
38740 次 |
最近记录: |