コンセプト

SSH トンネルとは?ポートフォワーディングを解説(2026)

SSH トンネル(ポートフォワーディング)を解説:ローカル(-L)、リモート(-R)、ダイナミック(-D / SOCKS)フォワーディングがそれぞれ何のためにあるか、セキュリティ上の注意点、そしてスマホからプライベートなサービスに到達するためのよりシンプルな代替案。

CC Chen Chen· 創業者·2026年6月24日·5 分で読めます

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 セッション
スマホからプライベートなサービスに到達するには、SSH トンネルのフラグを手で打つより Tailscale アドレスのほうがたいていシンプルです ── マシンに直接接続するだけ。

セキュリティに関する注記

トンネルは 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(プライベートアドレスへ直接到達)のほうが手動トンネルよりたいていシンプル
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog