SSHポートフォワーディング

外部からの接続を許可していないMySQLに繋ぐ必要があったのでSSHポートフォワーディング(トンネリング)を使いました。
分かってしまえば簡単なんですが、繋げるまで若干戸惑ったので備忘録ってことで記事にしておきます。

イメージとしては、MySQLが稼働しているサーバーにSSHでログインして、そこからMySQLに繋ぐ感じ。
MySQLから見れば、localhostからログインされていることになります。
言うまでもなく、SSHでログインできない環境ではこの技は使えません。

まず、SSHクライアントでポートフォワーディングの設定をします。

ssh -f -N -L 53306:localhost:3306 hogehoge@hogehoge.com -p 22 -i .key/id_rsa

後半部分は普通にSSHログインする時と同じです。
hogehoge.comのポート22にhogehogeで、.key/id_rsaというキーファイルを使ってログインする、という意味です。
キモは前半部分。
-fはこのコマンドをバックグラウンドに回すという意味。
-Nはポート転送のみを行うという意味。
-Lが転送するポートの設定。
上記の例だとlocalhostのポート53306を、リモートホストのポート3306に転送する、という意味になります。
ちなみに、リモートホストは後半部分に記述したホスト(今回はhogehoge.com)です。

これを実行したあとで、MySQL Workbenchなどのクライアントを使ってMySQLにアクセスします。
その際の設定でポイントになるのはlocalhostのポート53306、つまりは-Lオプションで指定したポートに繋ぐことです。

こりゃかなり便利かもしれない。(^^)
SSHのポートさえ開いてりゃいいんだもんなぁ。

Linuxの最新記事8件