ポートフォワーディング

Mobile SSH は Android と iOS の両方でローカルの SSH ポートフォワーディングに対応します。端末上のローカルポートが 127.0.0.1 で待ち受け、SSH 接続を通じてリモートのホストとポートへトラフィックを転送します。

保存済みトンネルの構文

ポートフォワーディング規則はカンマ区切りです。各エントリは次の 2 つの形式のいずれかを使います。

PORT
LOCAL:REMOTEHOST:REMOTE

短い形式:

8080

これは端末で 127.0.0.1:8080 をバインドし、サーバーの観点で localhost:8080 へ転送します。

完全な形式:

3000:localhost:3000

これは端末で 127.0.0.1:3000 をバインドし、SSH を通じてリモート側の localhost:3000 へ転送します。

複数の転送:

8080, 3000:localhost:3000, 15432:db.internal:5432

保存済みサーバーにトンネルを追加する

  1. Saved Servers を開きます。
  2. サーバープロファイルを追加または編集します。
  3. Port forwards に転送規則を入力します。
  4. サーバーを保存します。
  5. サーバーに接続します。

アプリは SSH セッションが接続した後に保存済みの転送を適用します。

トンネルはサーバープロファイルに属する

転送は保存済みサーバー側で宣言し、そのサーバーに接続したときに立ち上がります。セッションの途中でトンネルを追加・削除する専用の画面は、どちらのプラットフォームにもありません。転送を変更するには、サーバープロファイルを編集して接続し直してください。

これは意図的なトレードオフです。プロファイルに属するトンネルは、接続するたび — 新しいネットワークでの再接続後も含めて — 手で組み直さなくても戻ってきます。

IPv6 の宛先

IPv6 の宛先は、コロンがポートの区切りと混同されないよう角かっこで囲む必要があります。

8080:[2001:db8::1]:80

角かっこのない裸の IPv6 アドレスは、黙って誤読されるのではなく、あいまいとして拒否されます。同じ角かっこの書式はサーバーのアドレス欄でも使え、その後ろに任意でポートを付けられます([fe80::1]:22)。

アドレスのバインド

Mobile SSH はローカル転送を端末の 127.0.0.1 にバインドします。これは意図的な設計で、トンネルを端末ローカルに保ち、IPv6 のみのループバックによる予期しない動作を避けます。オペレーティングシステムが同じ端末上の他アプリのネットワークアクセスを許可している場合、それらのアプリが転送されたローカルポートに接続できることがあります。

よくある例

リモートサーバーで動く Web サービスにアクセスする:

8080

その後、同じ端末のブラウザで http://127.0.0.1:8080 を開きます。

開発サーバーにアクセスする:

3000:localhost:3000

SSH サーバーから到達できる内部データベースにアクセスする:

15432:db.internal:5432

トンネルのトラブルシューティング