さくらVPSに設置したMySQLにSSHのポートフォワードで接続
さくらVPSでPHPで開発したシステムを動かしていたのですが、一部の入力画面の処理はWebで作るのはちょっと大変そう。
じゃぁACCESSなら画面作るの簡単だし…と思ったけど、MySQLはVPSで動いていてiptableでポートはふさがっている。
クライアントは固定IPアドレスではないので、IPアドレス固定でポートは空けられない。
MySQLのポートを無条件で空けたくない。
クライアントはWindowsだから、SSHをコマンドで…というのはちょっと面倒。
という状況に陥って、どうしようか考えていました。
TeraTermとかPuTTYもアリだけど、もっと簡単にできないものか。
と探していたら、ありましたわこれが。
PortForwarderという名前そのまんまのものが。
さっそく使ってみたら良い感じです。
クライアントはWindows7の64bit版。
これでちゃんと動きます。
バッチファイルを作って、このバッチを起動したら自動的に接続して最小化してくれるようにしました。
googleで 「ssh mysql ポートフォワード」で検索すれば「SSHって?」とか「ポートフォワード???」という説明はたくさんでてくるので、ここでは割愛。
今回は何をやったのか、簡単に書いておきます。
1. ssh接続用のユーザーを作成。 このユーザーのシェルは/sbin/nologinにします。
2. VPSのsshの設定でパスワードのログインを禁止しているので、秘密鍵と公開鍵をつくります。
※terateamで作った鍵はエラーになって使えなかったので、VPSで「ssh-keygen」コマンドで作成。
パスフレーズは無しにしました。
3. 秘密鍵はPortForwarderを解凍したフォルダと同じところに置きます。
※別の所において、設定ファイルにディレクトリを指定しても読み込んでくれませんでした。
4. PortForwarderを解凍したフォルダにあるconfig.txtを書き換えます。
Host xxxxxxxx <- 適当な名前を付けます HostName xxx.xxx.xxx.xxx <- VPSのIPアドレス Port xxxx <- VPSで解放しているsshのポート IdentityFile xxxxxx <- 秘密鍵のファイル名 User xxxxxxxx <- sshで接続するユーザー LocalForward PORT1 localhost:PORT2 <- PORT1はローカルのポート、PORT2はVPSのMySQLのポートです。 BatchMode yes
5. これで1回、PortForwarder.exeを起動して、接続できるか確認します。
接続できたら、画面下の「Automatically」にチェックを入れて、接続したら最小化するようにしておきます。
6. 今度は起動用のバッチファイルを作成します。 当然拡張子は.BATにして下さい。
start PortForwarder -N xxxxxxxx <- config.txtのHostをここに書きます。 exit
このバッチファイルをダブルクリックして動かせば、VPSにconnectして最小化してくれます。
クライアントからVPSのMySQLに接続するときは、接続先を
127.0.0.1: PORT1 <- config.txtで指定したPORt1
にすれば繋がるはずです。
これでクライアントからVPSのMySQLにも接続できるようになって助かりました。
開発者の方に感謝です。
2013.6.21加筆
どうやら、最初に接続する時に4. のconfig.txtで
#LocalForward PORT1 localhost:PORT2 #BatchMode yes
のようにコメントにしておかないとエラーになることがあるみたいです。
また、VPSのシェルが/sbin/nologin なので、バッチで起動させて接続テストする必要があります。
なので、5.はやらずに6.のバッチを作成して接続テストします。
接続テストをするとPortForwarder.iniができるので、ここの
AutomaticallyHide false
を
AutomaticallyHide true
にすると、接続したら最小化されるようになります。