私は自分のローカルマシンでtmuxを使用しており、通常、同時に複数のセッションを実行しています。
私が通常行うことは、ローカルで動作するさまざまなウィンドウのセッションと、セッションごとに1つのホストに複数のウィンドウを接続する他のセッションです。
セッション/ウィンドウツリーは、私が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
\_ ...
Somehost&someotherhostで作成されたtmuxセッションに接続するセッション2とセッション3をある種のリモートセッションにする方法はありますか?
上記のツリーは次のようになります。
(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
\_ ...
私はこのトピックを見つけましたが、これが私がやりたいことかどうかわかりません: ホスト間でtmuxソケットを共有することは可能ですか?
私が探しているのは、ローカルマシンのsomehostとsomeotherhostに同じtmux設定が必要なことですが、それは問題にはなりません。
リモートホストに接続するときに、sshにコマンドを渡すことができます。リモートtmuxセッションに接続するには、-t
にtmux attach-session
オプションを含めます。
ssh <remote Host> -t tmux attach-session
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
このtmux設定は、リモートホストでtmuxセッションを作成しないことに注意してください。 ssh接続が失われた場合、影響を受けるtmuxウィンドウは戻りません。
Socatなどのツールを使用して、tmuxが使用するUNIXドメインソケットをローカルマシンにトンネルすることができます。しかし、実際にはトンネル(ssh)を別の(socat)に交換しているだけなので、あまり良くなく、安全ではありません。
リモートシェルといえば、そこでコマンドを実行できる、つまり直接アクセスできるということです。この場合、各リモートウィンドウでssh
接続を使用するだけで済みます。
あなたはそこに何かを伝えることができます:
「ねえ、でもリモートサーバーごとに複数のウィンドウを持つ方法はありません!」
sshの制限により、これは事実です。ただし、各サーバーまたはリモートサーバーでtmuxセッションを開始できます。 注:この場合、デフォルトを再バインドする必要がありますCtrl+b
ローカルマシンで衝突を防止します。
また、tmuxinator
を使用することをお勧めします。これは、少なくとも毎日tmuxセッションを撤回する場合に非常に役立つツールです。