非エンジニア奮闘記
公開:
更新:
アプリ・ソフト

SSH / Mosh / ET / tmux の正体。最初は ET が最適だと思ったが、現在は mosh + tmux + Tailscale に落ち着いた話

SSH / Mosh / ET / tmux の正体。最初は ET が最適だと思ったが、現在は mosh + tmux + Tailscale に落ち着いた話

「外出先から自宅の Mac に繋いで作業したい」。そう思ってリモート接続を試し始めると、 SSH 、 Mosh 、 ET 、 tmux といった用語が次々に出てきます。

最初は 「スクロールできて、切れにくいなら ET で十分では」 と感じたのを覚えています。実際、軽くその場で開いて少し作業する用途では、 ET は快適そのもの。

ただ、次第に使い方が変わってきました。 AI エージェントを複数立ち上げて、裏で指示を回しながら作業することが増えると、単純な接続の快適さだけでは足りません。そこで最終的には、 iTerm2 + mosh + tmux + Tailscale の構成に落ち着きました。

この記事では、そこに至るまでの試行錯誤を整理します。

役割の違い:「通信ケーブル」と「作業部屋」を混ぜてはいけません

リモート接続ツールは、役割によって 「通信ケーブル ( SSH / Mosh / ET ) 」 と 「仮想の作業部屋 ( tmux / Zellij ) 」 の 2 層に分かれます。軽作業なら ET が快適ですが、 AI エージェントを複数走らせるような重い運用では、セッション保持に優れた mosh + tmux + Tailscale の構成が最適解となります。

リモート接続ツールを調べると、 SSH 、 Mosh 、 ET 、 tmux 、 Zellij が同じ文脈で語られがちですが、実際には役割が違います。

  • SSH / Mosh / ET は、手元の Mac から遠隔の Mac へ繋ぐための 「通信経路」
  • tmux / Zellij は、接続先の Mac 上で作業状態を保持する 「仮想の作業空間」

この 2 層を分けて考えると、何を解決したいのかがかなり明確になります。

1. 通信経路 ( SSH / Mosh / ET )

手元の MacBook と、自宅の Mac mini を繋ぐ 「見えない線」 の代わり。

  • SSH: 最も標準的な接続方法。でも、 Mac をスリープさせると線がブチッと切れてしまいます。
  • Mosh: UDP という方式で通信します。線は切れませんが、過去のスクロール履歴が送られてこないのが難点。
  • ET ( Eternal Terminal ): いわば 「切れない SSH」 です。 SSH の操作感 ( スクロールができる! ) を保ったまま、線だけを強力に繋ぎ止めてくれます。

2. 作業空間 ( tmux / Zellij )

Mac mini の中に作る 「仮想の作業デスク」 のようなもの。通信が切れても、この部屋の中の作業状態はそのまま残ります。

  • tmux: 昔ながらの定番。驚くほど強力な反面、コピペなどの設定が少し複雑になりがちです。
  • Zellij: 最近注目のモダンな作業部屋。 Rust 製で、画面下に操作ガイドが出るなど、初心者でも迷わず使い始められる設計が嬉しいポイント。

リモート接続ツールの比較表

ツール 役割 接続の維持 スクロール 特徴
SSH 通信経路 × ( 切れます ) 標準的。でもスリープには弱いです
Mosh 通信経路 ◯ ( 切れません ) × 最新画面の同期に特化。履歴は追えません
ET 通信経路 ◯ ( 切れません ) SSH の操作感そのまま。軽作業には最適です
tmux 作業空間 ◯ ( 維持されます ) 画面を保持。 AI エージェント運用には必須です
Tailscale ネットワーク ◯ ( 安定します ) - どこからでも安全に繋ぐための 「仮想専用線」

ET は 「軽作業」 ではかなり良かった

ET ( Eternal Terminal ) は、 TCP ベースで SSH の操作感を維持したまま、ネットワーク切断への耐性を備えたツールです。 Mosh と違いスクロールバッファを維持できるため、 MacBook の蓋を閉じて再開しても、特別な設定なしに 「いつもの操作感」 で過去ログにアクセスできます。

最初に ET を試したときの印象は良好でした。

特に、その場で開いて少し作業するだけなら、スクロール感や接続の安定性がよく、かなり使いやすかったです。 SSH の延長線にある感覚で扱えるのも魅力。

ただし、これはあくまで 「単発作業」 「短時間作業」 での話です。使い方が進むと、複数の処理を並行で回したり、 AI エージェントを常駐させたりするケースが増えます。そうなると、通信の気持ちよさだけではなく、セッション管理そのものが重要になります。

mosh + tmux へ移行した理由:使い方が変わると、必要な構成も変わった

AI エージェントを複数立ち上げて裏で処理を流すようになると、必要なのは 「見た目の快適さ」 よりも、作業を切らさず維持できることでした。 iTerm2 + mosh + tmux の構成にすることで、複数の作業を裏で回しながら、必要なときに戻って確認するという運用がしやすくなりました。

Mosh と tmux は、最初は 「操作感が崩れる」 側面が気になりました。ただ、 AI エージェントを複数立ち上げて裏で処理を流すようになると、むしろ必要なのは 「見た目の快適さ」 よりも、作業を切らさず維持できることでした。

そこで、構成を次のように再整理しました。

  1. iTerm2 ( 操作感 )
  2. mosh ( 切断耐性 )
  3. tmux ( セッション保持 )
  4. 複数の AI エージェントや作業プロセス

この構成にすると、単に 「繋がる」 だけでなく、複数の作業を裏で回しながら、必要なときに戻って確認するという運用がしやすくなりました。

なお、この構成を安定して運用するにはネットワーク側の工夫 ( Tailscale など ) も重要になりますが、ここでは割愛します。

Mosh の 「スクロールできない」 という弱点も、 tmux 側のスクロール機能 ( コピーモード ) を使えば解決できます。 Mosh 単体ではスクロール体験が弱いが、 tmux を合わせることで実用に寄せられる、という役割分担です。最初は面倒に感じましたが、慣れてしまえば 「作業状態が絶対に消えない」 という安心感の方が勝りました。

結局、どれが最適かは 「作業の粒度」 で変わる

「MacBook の蓋を閉じるだけ ( スリープ運用 ) 」 が基本であれば、 ET だけで十分です。サーバーを再起動しても作業状態を完全に復元したい、あるいは画面を複雑に分割したい場合に初めて tmux や Zellij が必要になります。まずは ET の 「切れない恩恵」 だけを享受するのが、最も手軽な選択肢になります。

今の自分の結論は、かなりはっきりしています。

  • 軽く開いて少し触るだけなら ET はかなり良い
  • AI エージェントを複数走らせて、裏で継続的に回すなら iTerm2 + mosh + tmux + Tailscale の方が合っている

つまり、 ET が悪いのではなく、用途が変わったことで最適解が変わったということです。最初は ET の快適さに惹かれたが、運用の深さが増すと iTerm2 + mosh + tmux + Tailscale に戻った。この記事は、その変化の記録として書く方が自然です。

最終的にたどり着いたのは、 「一番気持ちいい接続」 ではなく、 「今の作業に一番合う構成」 でした。

ET は軽い作業では今でも良い選択肢です。けれど、 AI エージェントを複数動かしながら、長めの作業を裏で回すようになると、 iTerm2 + mosh + tmux + Tailscale の方が明らかに運用しやすい。リモート接続は、ツールそのものの優劣よりも、自分の作業スタイルにどこまで噛み合うかで決めるべきだと感じています。

設定編はこちら: [iTerm2 + mosh + tmux + Tailscale の構築手順]