あるマシンから別のEC2へポートフォワード(トンネリング)したい場合のsshコマンド
以下のような要望があったとする。
- あるEC2(Linux)上のあるポート番号で動いているWebアプリケーションにつなぎたい。(例として9001番ポートとする)
- セキュリティ上、10022ポートでのSSH接続しか許可されていない。
- このEC2へのSSHログインはできる。(アカウントと鍵ファイルは所有している)
- 接続用鍵ファイルはローカルの /[ホームディレクトリ]/.ssh/ 以下に置いてある。(権限は所有者のみ読み書き可に設定してある)
この場合以下のSSHコマンドで接続を確立すると、この接続が繋がっている間、ポートフォワーディングで繋がる。
ssh -p 10022 -i ~/.ssh/[キーファイル] -L 19001:localhost:9001 ec2-user@[EC2のIPアドレス]
-pオプション SSH接続先のポート番号。この場合は10022。デフォルトで何も指定しないと22番。よって、22番がSSH接続のポートとなっている場合は、このオプションは必要無い。
-i オプション::接続鍵ファイルを指定
-L オプション:: ローカルポート:接続先ホスト:接続先のポート という表記で書く。たとえば、上記だと「ローカルマシン上のブラウザでlocalhost:19001に繋ぐ」という行為が、「ホストマシン上のブラウザで localhost:9001で繋ぐ」という行為と同等となる。(接続がワープするようなイメージ)
ec2-user@[EC2のIPアドレス] ::通常のSSHコマンドと同じ、「接続先ホストへ繋ぐユーザアカウント@ホストIPアドレス」で接続先を指定