データエンジニア日記

データエンジニアの雑記

あるマシンから別の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アドレス」で接続先を指定