bambouville

ポート転送

ローカルポート転送を使うと、サーバーの向こう側にあるサービス(データベース、 ノートブック、開発用サーバーなど)に、あたかも手元にあるかのようにデバイスから 接続できます。

ルールを追加する

エディタでホストを開き、転送タブに移動します。各ルールの内容は次のとおり です。

  • ローカルポート — デバイス側のポートです(1024 以上である必要があります。 iOS のサンドボックスはそれ未満をバインドできません)。
  • リモートホスト — SSH サーバーから見たアドレスです(既定はlocalhost)。
  • リモートポート
  • 省略可能なラベル
  • 接続時に自動で開始

プリセットには定番のものがそろっています。jupyter 8888、postgres 5432、mysql 3306、redis 6379、web 3000、web 8080 です。

1 つのホストの中でローカルポートを重複させることはできません。ルールの変更は、 すでに接続済みのホストにもその場で適用されます。

ホストエディタの「転送」タブ。ローカルポート 8080 を localhost:18080 へ転送するルールが 1 つあり、dev server というラベルと有効化トグルが付いています。
ホストエディタの「転送」タブに保存されたルール。有効化トグルと現在の状態が付いています。

「トンネル」ページ

サイドバーのトンネルページには、すべてのホストの転送ルールが集まり、ホスト ごとにまとめられて、接続済み/未接続の状態とともに表示されます。各ルールには、 その状態(例:「待ち受け中 · アクティブ 0」)、リアルタイムの ↑/↓ のバイト数、 有効化トグル、そして HTTP 系のポートを Safari で開くボタンが並びます。

セッションの中では、トップバーの ⇄ N のチップが、そのホストについて同じ状態を 示します。

iPhone では、トンネルはセッションのトップバーから確認できますが、 ルールの作成と編集は iPad で行います。

「トンネル」ページ。8080 を localhost:18080 へ転送する dev server というラベルのルールが 1 つ、接続済みのホストの下にまとめて表示され、待ち受け中の状態と有効化トグルが見えています。
すべてのホストのすべてのルールを、ホストごとにまとめて表示します。それぞれに現在の状態とトグルが付いています。

トンネルを使う

ルールが待ち受けを始めたら、デバイス上の任意のアプリをlocalhost:<local port>に 向けてください。開発用サーバーならブラウザ、データベースなら Postgres クライアント といった具合です。通信は SSH 接続の中を通ってサーバーに届き、サーバーがそこから リモートの host:port へ接続します。

mosh と転送

転送ルールは SSH 接続に相乗りします。mosh のトランスポートでは次のように なります。

  • 自動 tmux名前付き tmux の起動モードは tmux 用の SSH サイドチャネルを 保持するため、転送はそこを通って機能します。
  • カスタムの起動モードには転送を通せる SSH 接続がないため、ルールの追加は 無効になります。起動モードを自動 tmux か名前付き tmux に切り替えてください。

制限

  • ローカルポートは ≥ 1024 である必要があります(iOS のサンドボックス)。
  • 1 つのホストの中で、ローカルポートを重複させることはできません。
  • 転送はローカルからリモートへの方向のみで、リモート (-R) 転送はありません。