ポートフォワーディング

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

Android の VPN ページには SSH VPN、ローカル SOCKS5 プロキシ、WireGuard、Shadowsocks、OpenVPN もあります。これらの設定は以下のローカル転送とは別です。

保存済みトンネルの構文

ポートフォワーディングのルールはカンマ区切りです。各エントリは次の 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

踏み台経由の接続

両方とも、保存 SSH サーバーを順序付きの保存踏み台リスト経由で接続できます。接続先を編集し、経由して接続に踏み台を追加して接続順に並べます。各段は自身の保存認証情報を使い、展開後の経路は最大 8 段です。

スマートフォンは最初の踏み台に接続し、以後のアドレスは前段のサーバーから到達できる必要があります。ローカル転送は端末・SFTP と同じ検証済み SSH 経路を使い、最終転送先は最後の SSH サーバーから接続します。各踏み台は先への TCP 転送を許可する必要があり、全サーバーの身元を認証前に確認します。踏み台は SSH 専用で、Eternal Terminal では使えません。

Android の VPN ルーティング

ホームから VPN を開き、名前付き設定を追加・取り込みして開始アイコンを押します。Android の VPN 許可を承認してください。有効中はルーティング停止になり、鉛筆で編集、ゴミ箱で削除します。よく使う VPN 種類が先頭になります。

Android の端末 VPN は同時に 1 接続だけです。別設定の開始で以前の VPN から切り替わります。ローカル SSH SOCKS5 は SSH 以外の VPN 経由で動作を継続できます。Tailscale は別アプリで、Mobile SSH VPN を開始すると置き換わります。IKEv2/IPsec は Mobile SSH ではなく Android の VPN 設定で管理します。

SSH VPN と SOCKS5 プロキシ

サイトは example.org のようなドメインで指定し、その配下も対象です。識別済みで一覧外のドメインは通常回線を使います。直接 IP 接続や暗号化 DNS で得たアドレスは一覧と確実に照合できず、SSH を使います。SSH VPN はアプリとサイト両方の選択を適用し、SOCKS5 はクライアント自身の設定で参加させます。

リモート DNS の既定は 1.1.1.1:53 で、SSH サーバーから届く数値アドレスを指定します。SSH VPN が再接続・認証待ちの間、SSH 対象の通信は遮断を続け、既知のバイパス先は通常通りです。停止・設定切り替え・VPN 権限取り消し・アプリ終了で保護は終わります。Android の常時接続やロックダウン保護は保証しません。

WireGuard、Shadowsocks、OpenVPN

これらのプロトコルエンジンはアプリに内蔵されています。Shadowsocks と OpenVPN に SSH VPN のアプリ・サイト選択機能はありません。VPN でも、サーバーの提供者や管理者が制限したインターネット接続を付与することはできません。

クイック設定タイル

一度 VPN 設定を開始すると Mobile SSH VPN タイルの対象になります。接続・再接続中を含め、有効な間はタイルが点灯します。タップで停止、再タップで記憶した設定を開始します。SOCKS5 の開始や他アプリの VPN の停止はしません。

Android 13 以降では VPN ページの初回表示時にタイル追加を要求します。断った場合や旧 Android はクイック設定 → 編集から追加できます。設定が削除済み、または権限がなければ VPN ページを開きます。

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