目的
開発マシン上のdockerで動作するrailsアプリケーションのdb接続を
踏み台サーバー経由でrdsに接続したい。
方法
前提
◦踏み台サーバー
・エンドポイント ip: 12.12.12.12
・pemファイル /Users/hoge/.ssh/hoge.pem
・接続ユーザー root
◦dbサーバー
・エンドポイント private domain: hogehoge.internal (踏み台から見て)
・postgreSQL(portは、5432)
① macターミナルから以下コマンドを実行、SSHポートフォーワーディングを行う。
ssh -N -L 5434:hogehoge.internal:5432 -i /Users/hoge/.ssh/hoge.pem -p 22 root@12.12.12.12
② database.ymlの行き先をmacの5434に設定。
host: host.docker.internal
port: 5434
注) docker上で動くrailsアプリの場合なので、
localhost でなく host.docker.internal で指定
③ rails サーバーを立ち上げる
正しくdbに接続されてることを確認。
sshポートフォーワーディングとは
sshポートフォーワーディングとは、sshコマンドのポート転送機能のこと。
sshコマンドは通常以下のように使用されるが、
ssh 10.10.10.10
ここに-L オプションをつけるとポートの転送先を設定できる。
例えば、
ssh -L ポート番号1:10.10.10.11:ポート番号2 10.10.10.10
これを実行すると、
localhost:ポート番号1への接続が、10.10.10.10を経由して
10.10.10.11:ポート番号2に転送されるようになる。