在 ssh 连接期间自动连接到 tmux 或屏幕以及如何设置唯一的 SESSION_NAME

在 ssh 连接期间自动连接到 tmux 或屏幕以及如何设置唯一的 SESSION_NAME

我想在 ssh 后自动使用 tmux 或 screen。我在 .ss/config 中编写了一些代码,这对我有帮助。

# ~/.ssh/config

Match exec "[[ $(ps h o args p $PPID | wc -w) -eq 2 ]]"
     RemoteCommand SESSION_NAME="debek"; tmux a -t ${SESSION_NAME} || tmux new -s ${SESSION_NAME} || screen -r ${SESSION_NAME} || screen -S ${SESSION_NAME}
     RequestTTY yes

目前,有一个问题。如果我想从本地计算机上的第二个终端连接到同一服务器,这显然会将我附加到相同的会话名称“debek”。我可以SCREEN_NAME="debek-{RANDOM}"使用一个唯一的会话名称来解决这个问题,但是当我失去连接并尝试再次连接时,它会为我创建一个新的会话名称,而不是自动连接到我的上一个会话名称。

您知道如何解决这个问题吗?

答案1

您可以做以下几件事:

  1. 不要使用 .ssh/config,而是创建一个 ssh 并附加到 tmux 的别名。然后您可以选择在 ssh 时是否从每个终端连接。

  2. 为主机名创建两个别名(在 /etc/hosts 或 DNS 中),并将 .ssh/config 配置为仅在连接到其中一个而不连接到另一个时才运行 tmux。

  3. 使远程命令仅附加到 tmux(如果尚未附加),例如通过检查tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ].或者tmux display -pt$SESSION_NAME '#{session_attached}'

相关内容