SSHリモートフォワードの活用方法|外部から内部環境へ安全に接続する仕組みを解説

目次
SSHリモートフォワードを活用して内部環境を安全に公開しよう
SSHのポートフォワーディング機能には、ローカルフォワードだけでなくリモートフォワード(Remote Port Forwarding)も存在します。
ローカルフォワードが「ローカルからリモートへの通信経路を作る」仕組みであるのに対し、リモートフォワードは「リモートからローカルへの通信経路を作る」仕組みです。
一見すると分かりにくい機能ですが、NAT配下のサーバや自宅環境への接続、開発環境の一時公開など、実務でも活用される場面があります。
本記事ではSSHリモートフォワードの仕組みや設定方法、実際の活用例について詳しく解説します。
リモートフォワードとは
リモートフォワードとは、SSHサーバ側のポートをクライアント側へ転送する機能です。
SSHトンネルを利用して、通常はアクセスできない内部サービスへ接続できるようにします。
イメージとしては以下のようになります。
外部ユーザー
↓
SSHサーバ
↓
SSHトンネル
↓
ローカルPC
リモート側からローカル側へ通信を流せることが特徴です。
なぜリモートフォワードが必要なのか
通常、SSH接続はクライアントからサーバへ行います。
しかし以下のような環境では外部から直接接続できません。
- 自宅ネットワーク
- NAT配下の端末
- プライベートネットワーク
- 一時的な開発環境
リモートフォワードを利用すると、外部サーバを経由してアクセスできるようになります。
基本構文
リモートフォワードの基本構文です。
$ ssh -R リモートポート:接続先ホスト:接続先ポート user@serverローカルフォワードの-Lが-Rになっただけですが、通信方向が逆になります。
基本的な利用例
ローカルPCでWebサーバが動いているとします。
以下を実行します。
$ ssh -R 8080:localhost:80 user@serverするとSSHサーバ側の8080番へアクセスすると、ローカルPCの80番へ転送されます。
通信の流れ
通信経路は次のようになります。
ブラウザ
↓
server:8080
↓
SSHトンネル
↓
localhost:80
SSHサーバが中継役になります。
開発環境の一時公開
開発中のWebアプリを一時的に外部へ公開したい場合があります。
例えば以下のような用途です。
- 顧客へのデモ
- 動作確認
- 共同開発
- 検証環境共有
リモートフォワードが役立ちます。
NAT環境での活用
家庭用ルータの配下にあるPCは通常外部から接続できません。
しかしSSH接続は外向き通信なので可能です。
その通信を利用して逆方向の接続経路を作れます。
これがリモートフォワードの大きな特徴です。
SSHサーバ側で必要な設定
OpenSSHではリモートフォワードが許可されている必要があります。
確認項目です。
AllowTcpForwarding yes通常は有効になっています。
GatewayPortsの設定
外部公開する場合はGatewayPortsも重要です。
設定例です。
GatewayPorts yesSSHサーバ自身以外からも接続可能になります。
GatewayPorts noの場合
デフォルト設定では以下のようになります。
GatewayPorts noこの場合、SSHサーバ自身からしかアクセスできません。
セキュリティ面では安全です。
GatewayPorts clientspecified
OpenSSHでは次の設定も利用できます。
GatewayPorts clientspecified接続時に公開範囲を指定できます。
柔軟な運用が可能です。
バックグラウンド実行
トンネルだけ作成したい場合です。
$ ssh -N -f -R 8080:localhost:80 user@server実務ではよく利用されます。
SSH設定ファイルで管理する
~/.ssh/configでも設定できます。
Host tunnel
HostName server.example.com
User admin
RemoteForward 8080 localhost:80管理が簡単になります。
リモートフォワードとローカルフォワードの違い
| 項目 | ローカルフォワード | リモートフォワード |
|---|---|---|
| オプション | -L | -R |
| 通信方向 | ローカル→リモート | リモート→ローカル |
| 用途 | 内部接続 | 内部公開 |
用途が大きく異なります。
クラウド環境での利用
AWSやAzureでは一時的な保守用途で利用されることがあります。
ただし本番環境で恒久運用するケースは少数です。
通常はVPNやロードバランサが利用されます。
セキュリティ上の注意点
リモートフォワードは内部サービスを公開する仕組みです。
そのため十分な注意が必要です。
- 不要な公開を避ける
- 公開範囲を限定する
- アクセスログを確認する
- 公開後は停止する
運用ルールを決めて利用しましょう。
AllowTcpForwardingの制御
不要な環境では無効化も可能です。
AllowTcpForwarding noセキュリティポリシーに応じて設定します。
接続確認方法
SSHサーバ側で待受ポートを確認します。
$ ss -ant
または
$ netstat -ant指定したポートがLISTEN状態になります。
よくあるトラブル
ポートが開かない
AllowTcpForwardingやGatewayPortsを確認します。
接続できない
ファイアウォール設定を確認します。
アクセスできる範囲が違う
GatewayPortsの設定を確認します。
実務での利用例
- 開発環境の一時公開
- 顧客向けデモ環境
- NAT配下サーバへの接続
- 遠隔保守
一時利用の用途で活躍します。
まとめ
SSHリモートフォワードは、SSHサーバ側のポートを利用してローカル環境のサービスを公開する機能です。
ローカルフォワードとは逆方向の通信経路を構築できるため、NAT配下の環境や一時的な公開用途で便利に利用できます。
ただし内部サービスを外部へ公開する仕組みでもあるため、GatewayPortsやファイアウォール設定を理解し、安全に運用することが重要です。
SSHポートフォワーディングの応用技術として、ぜひ理解しておきましょう。






