リモートサーバー、iTerm2、およびtmuxの統合


30

リモートサーバーでtmuxセッションを開始し、ローカルマシンでiTerm2のネイティブウィンドウと分割画面を使用できるようにします。

たとえば、リモートサーバーに2つのペインを持つ1つのウィンドウで実行されているtmuxセッションがあるとします。ローカルマシンのiTerm2では、各ペインに異なるtmuxペインが含まれるように、2つのネイティブiTerm2ペインが必要です。

これは可能ですか?

(逆も可能であることはわかっています。ローカルマシンでtmuxセッションを実行でき、別のマシンでは、たとえばiTerm2タブがウィンドウとして表示されます。しかし、これは一種の役に立たないようです。)

回答:


40

はい、可能です。

  • tmuxの最新バージョンをリモートでインストールする
  • iterm2の最新バージョンがローカルにインストールされている

経由ssh login@hostname -t 'tmux -CC'でログイン-これにより、リモートボックスにログインしたローカルボックスでiTerm2ウィンドウが開きます。


5
またssh login@hostname -t 'tmux -CC attach'、iterm2のshell-> tmux-> dashboardメニューを使用して確認するために再接続することを忘れないでください。
therealmarv

1
ねえ、皆さんはsshではなくmoshでそれをする方法を知っていますか?編集:それは不可能です:github.com/mobile-shell/mosh/issues/640
fane89

1
:あなたが接続して、特定のセッションに接続したい場合は、次のように使用することができますssh login@hostname -t 'tmux -CC a -t sessionName'
ジェレミーIglehart

autosshで動作させるか、何らかの理由で切断に抵抗する機会がありますか?
イゴール

4

2015-12-16現在の安定版リリースバージョン(OS X 10.11.2のiTerm 2.1.4およびRaspbian Linuxのtmux 1.9)で、私にとってうまくいったものがあります。

  1. 最初に.ssh/configローカルマシンと.ssh/authorized_keysリモートマシンで使用して、リモートシステムへのパスワードなしのログインを設定します。これが適切に設定されると、実行するだけでログインできるはずですssh pipiリモートシステムのホスト名と仮定)。

  2. 新しいiTerm2プロファイルを作成します。これは、ローカルシェルにログインする代わりssh piに、リモートマシンにログインするための呼び出しのみを行います。これを設定するには、設定/プロファイル/ + / Command.Command = "ssh pi"に移動します

  3. 以下を実行して、新しいプロファイルを介してリモートマシンへのiTerm2ウィンドウを開きます:Profiles / Pi

  4. iTerm2のリモートログインウィンドウで、コマンドラインで以下を実行しますtmux -CC。この後、iTerm2ウィンドウにtmuxコマンドモードが表示され、tmuxは新しいセッションを作成し、iTerm2はそのtmuxセッションの新しいiTerm2ウィンドウをすぐに作成します。その新しいiTerm2ウィンドウ内の最初のiTerm2タブは、そのセッションの単一のtmuxウィンドウを表します。CMD-Tを実行すると、新しいtmuxウィンドウを表す新しいiTerm2タブが作成されます。

これはどのように使用しますか?

  • この時点で、「Shell / tmux / Dashboard」を実行して、既存のtmuxセッションとウィンドウに関するiTerm2の理解を観察できます。

  • tmuxセッションを表すiTerm2ウィンドウを閉じると、基になるセッションとすべてのtmuxウィンドウが強制終了されます。

  • tmuxコマンドモードを表示するiTerm2ウィンドウを閉じると、そのセッションに接続されていたtmuxクライアントインスタンスが強制終了されるため、両方のiTerm2ウィンドウが消えますが、tmuxセッションはまだ生きており、再接続できますそれ。

  • tmuxからより秩序だったデタッチが必要な場合はESC、tmuxコマンドモードウィンドウ内で行ってください。

  • 新しいtmuxセッションを作成する代わりに、元々必要だったのが既存のセッションにアタッチすることだった場合は、でそれを行うことができますtmux -CC attach

理論的には、リモートシステムに接続すると既存のtmuxセッションに自動的に接続されるようにiTerm2またはtmuxを構成する方法があるはずだと思いますが、コマンドラインを変更して機能させることはできませんでしたiTerm2プロファイル。


[[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exit.bashrc(またはそこから呼び出されるもの)で使用するsshログインで実行中のtmuxセッションに自動的に接続するにはテストは、対話型シェル、sshセッション、tmuxでまだ実行されていない、emergency-dont-do-itなしファイル。exit最後には、tmuxは(私のために主にデタッチ)を出ると、接続を閉じます。
おどけた
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.