SSHポートフォワード徹底解説:ローカル・リモート・ダイナミック・多段ProxyJumpの違いと活用法

以前の記事では、ProxyJumpを用いた多段SSHポートフォワードについてまとめました(SSHで多段ポートフォワード)。この機能は、踏み台サーバを経由して奥のネットワークにアクセスしたい場合に非常に便利です。

しかし、SSHのポートフォワードには大きく分けて以下の3種類が存在します。

  • ローカルポートフォワード(-L

  • リモートポートフォワード(-R

  • ダイナミックポートフォワード(-D

それぞれの仕組みや使いどころを正しく理解しておくと、トラブルシューティングにも役立ちますし、より柔軟なネットワーク構成が可能になります。

今回は、これらのSSHポートフォワードの種類について整理し、ProxyJumpを絡めた応用例も紹介します。


ローカルポートフォワード(-L

概要

自分のローカルマシンのポートを開き、そこへのアクセスをSSH先のマシンを通じてさらに別のホスト・ポートへ転送します。

構文

ssh -L [ローカルポート]:[転送先ホスト]:[転送先ポート] ユーザ@中継サーバ

ssh -L 8080:localhost:80 user@remote

→ ローカルの localhost:8080 にアクセスすると、リモートの localhost:80 に届く

用途

  • 社内ネットワーク上のWebサービスに外部からアクセスする

  • リモートDB(MySQL, PostgreSQLなど)への接続


2. リモートポートフォワード(-R

概要

SSH接続先のマシン上でポートを開き、そこへのアクセスをローカルマシンへ転送します。

構文

ssh -R [リモートポート]:[転送先ホスト]:[転送先ポート] ユーザ@サーバ

ssh -R 9090:localhost:3000 user@vps

→ VPS上の localhost:9090 にアクセスすると、ローカルの localhost:3000 に届く

用途

  • NATやファイアウォールの内側にあるローカルPCを外部公開

  • 外部からのリモートデバッグやファイル共有

注意点

  • sshd_configGatewayPorts yes が必要な場合がある

  • 外部公開にはセキュリティリスクが伴うため十分な対策が必要


3. ダイナミックポートフォワード(-D

概要

SOCKSプロキシとして機能し、ポートフォワードの転送先をクライアントが動的に決定可能にします。

構文

ssh -D [ローカルポート] ユーザ@サーバ

ssh -D 1080 user@remote

→ ローカルにSOCKS5プロキシが立ち上がる

用途

  • ブラウザの通信をSSHトンネル経由にする(プライバシー対策、地域制限回避)

  • VPN代替としての簡易なセキュア通信経路構築

特徴

  • 転送先は動的(DNS解決もリモート経由に可能)

  • ブラウザやcurlなどSOCKS対応アプリとの併用が前提


4. 多段ポートフォワードとProxyJumpの応用

複数のサーバを踏み台として目的地に到達するには ProxyJump(または昔ながらの -J オプション)を使います。

構文例(ローカルポートフォワード+ProxyJump)

ssh -J user1@jump1,user2@jump2 -L 8080:target:80 user3@target

特徴

  • ~/.ssh/config に設定すれば簡略化できる

  • 各段階のSSH接続を明示的に指定できるため柔軟


5. 実用的な使い分けと注意点

フォワード種別 主な用途 ポイント
ローカル(-L) 外部→内部 サービス利用
リモート(-R) 内部→外部 サービス公開
ダイナミック(-D) プロキシ通信 SOCKS経由
多段(-J) 中継経由アクセス ProxyJump活用

セキュリティの視点も重要

  • ポートフォワード経由でどこにアクセスできるかを常に意識する

  • 公開ポートにはFirewallと認証制限を


おわりに

SSHのポートフォワードは一見すると複雑に見えますが、目的に応じた使い分けと基本の構文さえ押さえてしまえば、非常に強力なツールになります。納戸工房では、こうした地味だけれど確実に役立つ技術を積極的に取り上げていきます。

「ポートフォワードは危険」というイメージを持つ方もいますが、適切な知識と設定があれば、むしろセキュアな通信経路を構築する武器になります。

DIY&修理

Posted by 納戸 工房