ポートフォワーディング
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
保存済みサーバーにトンネルを追加する
- Saved Servers を開きます。
- サーバープロファイルを追加または編集します。
- Port forwards に転送規則を入力します。
- サーバーを保存します。
- サーバーに接続します。
アプリは 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
トンネルのトラブルシューティング
- SSH セッションが接続されていることを確認します — 転送はセッションが確立したあとに立ち上がります。
- ローカルポートがすでに使用されていないか確認します。
- リモートのホストとポートが SSH サーバーから到達できるか確認します。
- 宛先のサービスが SSH サーバー自体にある場合は
localhostを使います。 - SSH サーバーの背後にある別のホストへ転送する場合は、サーバーの内部 DNS 名または IP を使います。