踏み台サーバーを経由したMySQLアクセス(ポートフォワーディングで)
問題
Bサーバーからなら接続可能なMySQLサーバーAに接続したいのだけど、BサーバーにsshができるCサーバーから接続したい。
C(クライアント) → B(踏み台) → A(DB)
(C → A はできなず、C → B、B → A ならできる構成で)
答え
sshポートフォワーディングするとこんな感じ。
ssh -f -N -L 3306:{DB_HOST}:3306 -i {SECRET_KEY} {SSH_USER}@{SSH_HOST}
パスワード手入力なら
ssh -f -N -L 3306:{DB_HOST}:3306 {SSH_USER}@{SSH_HOST}
例)
ssh -f -N -L 3307:172.28.123.123:3306 sshuser@192.168.123.123
上記コマンド実行後、ローカルの3307ポートに接続すると、ポート転送で 192.168.123.123 を経由して 172.28.123.123 に接続できる。
mysql -h 127.0.0.1 -P 3307 -u dbuser -p
ポート転送設定をしたままにしておけば、phpなどプログラムからでもローカルの指定のポートに接続すると、転送先のMySQLサーバーに接続できる。
MySQLから見ると、接続元は踏み台サーバーになるので、そのようにユーザー、権限の設定をするとよい。
コメント