SSH接続中にtmuxまたはscreenに自動的に接続し、一意のSESSION_NAMEを設定する方法

SSH接続中にtmuxまたはscreenに自動的に接続し、一意の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

現在問題があります。私のローカルコンピュータの2番目の端末で同じサーバーに接続するには、明らかに同じセッション名「debek」が追加されます。一意のセッション名を使用してこの問題を解決できますが、切断SCREEN_NAME="debek-{RANDOM}"して再接続しようとすると、最後のセッション名に自動的に接続するのではなく、新しいセッション名が生成されます。

この問題を解決する方法を知っていますか?

答え1

以下は、できることのいくつかです。

  1. .ssh/configを使用する代わりに、SSHエイリアスを作成してtmuxに接続してください。その後、SSH接続時に各端末から接続するかどうかを選択できます。

  2. ホスト名用に2つのエイリアス(/ etc / hostsまたはDNS)を作成し、一方に接続し、もう一方には接続しない場合にのみtmuxを実行するように.ssh / configを設定します。

  3. リモートコマンドがまだ接続されていない場合にのみtmuxに接続するようにします(例:checktmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]または)tmux display -pt$SESSION_NAME '#{session_attached}'

関連情報