ODBCやJDBCからレンタルサーバのDBにSSH経由で接続する方法(ポートフォワード機能)

通常、リモートにあるレンタルサーバやVPSサーバは、DBが待ち受けているポートは閉じられており、クライアントのソフトやeclipseなどの開発環境からは接続できません。

一方、そういったサーバは、sshサーバのポートだけは開いていることが多いため、この記事では、そんなサーバ上で動いているデータベースにsshを経由してクライアントソフトから接続する方法を解説します。

ポートフォワード(port forward)とは

sshにはポートフォワード(port forward)という機能があり、sshポートを経由して、セキュアにリモートサーバの他のポートと接続できます。sshなので、通信も暗号化されており、セキュリティの面でも優れています。

ここでは、リモートにあるVPS上のMysqlに、ローカルPCから接続することを例に解説します。

下の図を見てみてください。

任意のポート番号への接続を、sshがリモートサーバに転送(forward)してくれるので、ローカルのPCからは、リモートサーバ上のMYSQLの3006番ポートに、19000番のポートとして接続が可能になります。

ポートフォワードの設定手順

それではさっそく、設定を行ってみましょう。

sshのクライアントソフトであれば、大体可能な機能ですが、ここでは、PUTTYを使います。

Sessionでの設定

初めに「Session(セッション)」の項目でリモートサーバへのSSH接続を設定します。

サーバのURLとポート番号(普通は22番)、コネクションのタイプ「SSH」を入力します。

Connections(コネクション)での設定

次に、「Connections(コネクション)」の項目を設定します。

下記のように設定してください。

「Connections(コネクション)→SSH→Tunnels(トンネル)」での項目

「Connections(コネクション)→SSH→Tunnels(トンネル)」の項目を設定します。

SourcePort(源ポート)というのが、ローカルのポート番号です。10000以上60000以下なら任意の番号で結構ですが、今回は19000番としました。

Destionation(送り先)がリモートのサーバですので、リモートサーバのアドレスとMySqlのポート3306を指定します。

その下の設定は、LocalとAutoで結構です。

設定がすんだら、「Add」(追加)ボタンを押して、設定を追加すると、右のように追加されます。

設定の保存

ここまでOKであれば、この設定は保存しておきましょう。

「Session(セッション)」の項目に戻って、Saveしておきます。

PortForwardの開始

それではPUTTYを使ったポートフォワードを始めましょう。

「Open」(開く)ボタンで通常のSSH接続のように開始します。

すると、以下のように、コンソールがスリープしたような状態になります。通常のログインとは異なり、ログイン成功して、プロンプトが出るわけではないことに注意してください

これで、OKです。コンソールがこのような状態になっている間はフォワーディングが有効です。

クライアントソフトからの接続設定

ODBC

通常のODBC接続の設定が可能です。

下記は、Windowsのコントロールパネルの「ODBC(データソース)」から追加を行った時の設定画面です。

「localhost:19000」で接続できることが分かります。

ODBCの設定ができれば、エクセルからでもリモートのMySqlに接続できることになりますね。

JDBC

JDBCの接続も問題ありません。

「jdbc:mysql://localhost:190000/DB名」で接続できます。

これで、ローカルのEclipseからでも接続でき、開発の効率が上がります。

まとめ

以上が、MySqlを例にした、ポートフォワードのやり方でした。仕組みさえわかれば、様々なクライアントから、まるでローカルPC上のサービスのように接続でき、大変便利です。

是非、いろいろなことに利用してみてください。