通常、リモートにあるレンタルサーバやVPSサーバは、DBが待ち受けているポートは閉じられており、クライアントのソフトやeclipseなどの開発環境からは接続できません。
一方、そういったサーバは、sshサーバのポートだけは開いていることが多いため、この記事では、そんなサーバ上で動いているデータベースにsshを経由してクライアントソフトから接続する方法を解説します。
ポートフォワード(port forward)とは
sshにはポートフォワード(port forward)という機能があり、sshポートを経由して、セキュアにリモートサーバの他のポートと接続できます。sshなので、通信も暗号化されており、セキュリティの面でも優れています。
ここでは、リモートにあるVPS上のMysqlに、ローカルPCから接続することを例に解説します。
下の図を見てみてください。
任意のポート番号への接続を、sshがリモートサーバに転送(forward)してくれるので、ローカルのPCからは、リモートサーバ上のMYSQLの3006番ポートに、19000番のポートとして接続が可能になります。
ポートフォワードの設定手順
それではさっそく、設定を行ってみましょう。
sshのクライアントソフトであれば、大体可能な機能ですが、ここでは、PUTTYを使います。
初めに「Session(セッション)」の項目でリモートサーバへのSSH接続を設定します。
サーバのURLとポート番号(普通は22番)、コネクションのタイプ「SSH」を入力します。
次に、「Connections(コネクション)」の項目を設定します。
下記のように設定してください。
「Connections(コネクション)→SSH→Tunnels(トンネル)」の項目を設定します。
SourcePort(源ポート)というのが、ローカルのポート番号です。10000以上60000以下なら任意の番号で結構ですが、今回は19000番としました。
Destionation(送り先)がリモートのサーバですので、リモートサーバのアドレスとMySqlのポート3306を指定します。
その下の設定は、LocalとAutoで結構です。
設定がすんだら、「Add」(追加)ボタンを押して、設定を追加すると、右のように追加されます。
ここまでOKであれば、この設定は保存しておきましょう。
「Session(セッション)」の項目に戻って、Saveしておきます。
それではPUTTYを使ったポートフォワードを始めましょう。
「Open」(開く)ボタンで通常のSSH接続のように開始します。
すると、以下のように、コンソールがスリープしたような状態になります。通常のログインとは異なり、ログイン成功して、プロンプトが出るわけではないことに注意してください。
これで、OKです。コンソールがこのような状態になっている間はフォワーディングが有効です。
クライアントソフトからの接続設定
通常のODBC接続の設定が可能です。
下記は、Windowsのコントロールパネルの「ODBC(データソース)」から追加を行った時の設定画面です。
「localhost:19000」で接続できることが分かります。
ODBCの設定ができれば、エクセルからでもリモートのMySqlに接続できることになりますね。
JDBCの接続も問題ありません。
「jdbc:mysql://localhost:190000/DB名」で接続できます。
これで、ローカルのEclipseからでも接続でき、開発の効率が上がります。
まとめ
以上が、MySqlを例にした、ポートフォワードのやり方でした。仕組みさえわかれば、様々なクライアントから、まるでローカルPC上のサービスのように接続でき、大変便利です。
是非、いろいろなことに利用してみてください。