2026年5月29日
2026年5月29日
SSHのポートフォワーディングでローカルポートを転送する方法
はじめに
SSHのポートフォワーディング機能は、遠隔地のポートをローカルホストのポートとして使用する方法です。これは、ネットワーク上の制約やセキュリティ要件を克服し、外部から内部サーバーへのアクセスを安全に行うために役立ちます。
症状・背景
このテーマが必要になる主な場面は以下の通りです:
- VPNがない場合:外部からの接続が直接許可されていないネットワーク内にあるWebサーバーやDBサーバーにアクセスする必要がある場合。
- セキュリティ要件:内部サービスの公開を避けるために、ファイアウォールやNATを使用しているが、特定のポートへの外部アクセスが必要な場合。
- 開発環境のセットアップ:ローカル開発サーバーから遠隔地の実際のホストに接続するために必要な設定を行う必要がある場合。
手順・設定方法
ステップ1: 基本的なポートフォワーディングの実行
# SSHクライアントからSSHサーバーへの接続を行い、指定された外部ポートをローカルポートに転送します。
ssh -L 127.0.0.1:8080:example.com:443 user@remote_host
# コマンドの説明
# ssh: SSHクライアントコマンド
# -L: ポートフォワーディングオプション
# 127.0.0.1:8080:example.com:443: 外部ホスト(example.com)の443番ポートからローカルホストの8080番ポートへの転送
# user@remote_host: ログインユーザー名とSSHサーバーのアドレス
ステップ2: 複数のポートフォワーディング
# 1つのSSH接続から複数のポートをローカルに転送する方法
ssh -L 8080:example.com:443 -L 9090:example.org:80 user@remote_host
# コマンドの説明
# 外部ホスト(example.com)と(example.org)のポートをローカルホストの8080番と9090番に転送します。
ステップ3: フォワーディングと実践的な使用例
# Webブラウザから内部サーバーへの接続
http://127.0.0.1:8080/
# または、HTTPSの場合
https://127.0.0.1:8080/
ステップ4: セッション終了時の自動ポートフォワーディング
# シェルスクリプトを使用してポートフォワーディングを自動化します。
while true; do ssh -L 8080:example.com:443 user@remote_host & disown; sleep 1200; done
注意事項
- セキュリティ上の注意:SSHポートフォワーディングは、通常のセッション中でのみ効果があります。セッションが終了すると、転送が自動的に停止します。
- パフォーマンス/運用上の注意:大量のトラフィックや高負荷のアプリケーションでは、ポートフォワーディングによりパフォーマンスへの影響を考慮する必要があります。
まとめ
1. 基本的なポートフォワーディング: SSHを使って外部ホストのポートをローカルポートに転送します。
2. 複数のポートフォワーディング: 同じSSH接続から複数の外部ポートをローカルに転送できます。
3. 実践的な使用例: ブラウザで内部サーバーへのアクセスが可能になります。
4. 自動化とセッション管理: シェルスクリプトを使用して、セッション終了後にでもポートフォワーディングを維持します。
関連記事: