リモートサーバーでtmuxセッションを開始し、ローカルマシンでiTerm2のネイティブウィンドウと分割画面を使用できるようにしたいと考えています。
たとえば、リモートサーバーで、2つのペインを持つ1つのウィンドウでtmuxセッションを実行しているとします。ローカルマシンのiTerm2に、各ペインに異なるtmuxペインが含まれるように、2つのネイティブiTerm2ペインが必要です。
これは可能ですか?
(私はその逆が可能であることを知っています—これにより、ローカルマシンでtmuxセッションを実行でき、別のマシンでは、たとえばiTerm2タブがウィンドウとして表示されます。しかし、これは一種の役に立たないようです。)
はい、可能です。次の点を確認してください。
ssh login@hostname -t 'tmux -CC'
およびvoilà経由でログインします。これにより、リモートボックスにログインしているローカルボックスのiTerm2ウィンドウが開きます。
以下は、私にとって有効なものであり、2015-12-16の安定リリースバージョンであり、OS X 10.11.2ではiTerm 2.1.4、Raspbian Linuxではtmux 1.9です。
まず、ローカルマシンで.ssh/config
を使用し、リモートマシンで.ssh/authorized_keys
を使用して、リモートシステムへのパスワードなしのログインを設定します。これが適切に設定されると、ssh pi
を実行するだけでログインできるようになります(pi
がリモートシステムのホスト名であるとします)。
ローカルシェルにログインするのではなく、ssh pi
を呼び出すだけでリモートマシンにログインする新しいiTerm2プロファイルを作成します。これを構成するには、次のように移動します:Preferences/Profiles/+/Command.Command = "ssh pi"
次のようにして、新しいプロファイルからリモートマシンへのiTerm2ウィンドウを開きます。
ITerm2リモートログインウィンドウのコマンドラインで、tmux -CC
を実行します。この後、iTerm2ウィンドウにtmuxコマンドモードが表示され、tmuxが新しいセッションを作成し、iTerm2がそのtmuxセッション用の新しいiTerm2ウィンドウをすぐに作成します。その新しいiTerm2ウィンドウ内の最初のiTerm2タブは、そのセッションの単一のtmux windowを表します。 CMD-Tを実行すると、新しいtmuxウィンドウを表す新しいiTerm2タブが作成されます。
これをどのように使用しますか?
この時点で、「シェル/ tmux /ダッシュボード」を実行して、既存のtmuxセッションとウィンドウに関するiTerm2の理解を観察できます。
Tmuxセッションを表すiTerm2ウィンドウを閉じると、基になるセッションとすべてのtmuxウィンドウが強制終了されます。
Tmuxコマンドモードが表示されているiTerm2ウィンドウを閉じると、そのセッションに接続されていたtmuxクライアントインスタンスが強制終了されたように見えるため、両方のiTerm2ウィンドウが非表示になりますが、tmuxセッションは引き続き有効であり、再度接続できます。それ。
Tmuxからより整然とした分離が必要な場合は、tmuxコマンドモードウィンドウ内でESC
を実行します。
新しいtmuxセッションを作成する代わりに、本来必要なのは既存のセッションにアタッチすることだった場合は、tmux -CC attach
を使用してそれを行うことができます。
理論的には、リモートシステムに接続したときに既存のtmuxセッションに自動的に接続されるようにiTerm2またはtmuxを構成する方法があるはずですが、コマンドラインを変更しても機能しませんでした。 iTerm2プロファイル。