SSH トンネルとは?
SSH トンネル(SSH ポートフォワーディングとも呼ばれます)は、別のサービスのトラフィックを暗号化された SSH 接続を通して送ります。これにより、本来は直接アクセスできないサービス ── サーバーの localhost にバインドされたデータベース、ファイアウォールの背後にある Web UI、外出先からの自宅ネットワーク ── に SSH 経由で到達できます。種類は 3 つ:ローカル(-L)、リモート(-R)、ダイナミック(-D、SOCKS プロキシ)。それぞれが何をするか、いつ使うかを説明します。
ローカルフォワーディング(-L):リモートサービスにローカルから到達
最も一般的なタイプです。サーバーが到達できるサービスへ、ローカルポートを転送します。典型例:サーバーの localhost のみでリッスンするデータベース。
ssh -L 8080:localhost:5432 user@server
# now localhost:8080 on your machine → the server's Postgres on :5432 インターネットに公開されていないリモート DB にローカルのデータベース GUI を接続したり、リモート管理パネルを自分のブラウザで開いたりするのに使います。
リモートフォワーディング(-R):ローカルサービスを公開
逆方向です:サーバー上のポートを自分のマシン上のサービスへ転送させます。リモートのマシン(やチームメイト)に、ローカルで動いているもの ── 開発サーバーなど ── へ到達させたいときに便利です。
ssh -R 9000:localhost:3000 user@server
# the server's :9000 → your local app on :3000 ダイナミックフォワーディング(-D):SOCKS プロキシ
これは SSH 接続を SOCKS プロキシに変えるので、ブラウザのトラフィックをサーバー経由でルーティングできます ── サーバーのネットワーク上の何かに到達したり、そこにいるかのようにブラウジングしたりするのに便利です。
ssh -D 1080 user@server
# point your browser's SOCKS proxy at localhost:1080 スマホでの SSH トンネル ── そしてよりシンプルな代替案
ポートフォワーディングはほぼデスクトップのワークフローです。モバイル SSH クライアントはターミナルに重点を置いており、スマホでトンネルのフラグを入力するのは面倒です。最も一般的な目的 ── スマホからプライベートなサービスに到達する ── には、手動トンネルよりすっきりした答えがたいていあります:そのサービスのホストを Tailscale ネットワークに入れ、そのプライベートアドレスで直接到達するのです。TermAI は Tailscale を内蔵しているので、ポートを転送する代わりに、プライベートなマシンに接続してそのまま作業できます。Tailscale vs WireGuard を参照。
セキュリティに関する注記
トンネルは SSH によって暗号化されており、これは良いことです ── ただしリモートフォワーディング(-R)は、意図したよりも広くローカルサービスを公開してしまうことがあり、GatewayPorts はフォワードをネットワーク全体に開いてしまうことがあります。必要なものだけを転送し、意図がない限り localhost にバインドし、フォワードを開きっぱなしにするよりプライベートネットワーク(Tailscale)を優先しましょう。
FAQ
SSH ポートフォワーディングは何に使う?
直接アクセスできないサービス ── サーバーの localhost のデータベース、社内の Web UI、自宅ネットワーク ── に、SSH 経由でトンネリングして到達するために使います。
-L と -R の違いは?-L(ローカル)は、自分のマシン上のポートを、サーバーが到達できるサービスへ転送します。-R(リモート)は、サーバー上のポートを、自分のマシン上のサービスへ転送します。-D は SOCKS プロキシを作ります。
スマホから SSH トンネリングはできる?
対応しているクライアントもありますが、スマホでは扱いにくいです。プライベートなサービスに到達するなら、Tailscale(TermAI に内蔵)のほうがたいていシンプルです ── ポートを転送する代わりに、プライベートアドレスへ直接接続します。
クイックファクト
- SSH トンネル = 別のサービスのトラフィックを自分の SSH 接続を通してルーティングすること
- -L ローカル:リモートサービスにローカルポートで到達
- -R リモート:ローカルサービスをサーバー上で公開
- -D ダイナミック:サーバー経由の SOCKS プロキシ
- スマホでは:Tailscale(プライベートアドレスへ直接到達)のほうが手動トンネルよりたいていシンプル
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.