web-dev-qa-db-ja.com

リモートのsshシェルにtmuxをネストしないでください

接続するすべてのホストにユーザーアカウントの.zshrcを設定し、まだ実行されていない限り、ログイン時にtmuxを自動的に開始します。

if [ -z "$TMUX" ]; then tmux attach -d || tmux new fi

これは、ローカルホストのtmuxセッション内からリモートホストの自分のアカウントにssh(またはmosh)するまではうまく機能します。 $TMUXマクロはローカルホストからリモートに渡されないため、tmuxはリモートホストで起動し、2つのネストされたtmuxセッションがあります。

自動起動動作を維持しながらこれを回避する方法はありますか?理想的には、リモートシェルが、接続しているホスト上のtmuxセッション内から起動されていることを認識し、2番目のtmuxインスタンスを起動しないようにします。

リモートシェルで$TERMをチェックしようとしましたが、ローカルマシンのtmuxセッション内で実行されているかどうかに関係なく、常にxterm-256colorです。

4
Gene Goykhman

@ mark-plotnickのコメントのおかげで、私には自分に合った解決策があると思います。

リモートホストで、/ etc/ssh/sshd_configに次を追加します。

AcceptEnv TMUX

ローカルホストで、〜/ .ssh/configに追加します。

Host * SendEnv TMUX

これで、$TMUX env変数の値がリモートホストに送信され、値が空白でない場合はtmuxが起動しなくなりました。

サーバー側で変更を加えてもかまいませんが、すべてのクライアントを編集する必要がないことを望みます~/.ssh/configなので、追加の提案を受け入れることができます。

4
Gene Goykhman