在 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}'

相關內容