ssh コマンドの -L オプションは、「ローカルポートフォワーディング」を設定するために使われます。このオプションを使用すると、SSH トンネルを通じてローカルホストのポートをリモートのサーバーに接続することができます。
-L オプションの構文
ssh -L [ローカルポート]:[リモートホスト]:[リモートポート] [SSHサーバー]
- ローカルポート: ローカルマシンで使用するポート番号です。通常、
localhostに対して開かれるポートです。 - リモートホスト: SSHサーバーからアクセス可能なリモートホストのアドレスです。
localhostでも、別のサーバーでも指定できます。 - リモートポート: リモートホスト上でアクセスしたいポート番号です。
- SSHサーバー: SSHトンネルを確立するサーバーのアドレスです。
動作の仕組み
このオプションを使うと、以下のような動作になります。
-
ローカルホストでの接続: ローカルの指定したポート(
ローカルポート)に接続すると、リクエストがSSHを通じてリモートのホスト(リモートホスト)に転送されます。 -
リモートのリソースにアクセス: トンネル内では、リモートの指定されたホストとポート(
リモートホスト:リモートポート)に接続されるため、まるでローカルマシンから直接リモートリソースに接続しているかのように通信が行われます。
例:
ssh -L 8080:example.com:80 user@remote-server
このコマンドでは、以下のことが起こります。
- ローカルマシンの
localhost:8080にアクセスすると、リモートサーバーremote-server経由で、example.com:80(HTTPサーバー)に接続します。
用途
- リモートサーバーへの安全な接続: ローカルホストから直接接続できないリモートのサービスにアクセスするときに、SSHトンネルを使って安全に通信できます。
- ファイアウォールやネットワークの制約を超える: 外部から直接アクセスできない内部のリソース(データベース、ウェブサーバーなど)に、SSHトンネルを経由してアクセスすることが可能です。
-L オプションを使うことで、安全にリモートのリソースにアクセスできる便利な手段が提供されます。