PostgreSQLに付いている便利なpgAdmin。本当はローマ数字で3が付くの。

これを使ってSSHサーバー上にあるPostgreSQLに接続したのだが、結構面倒くさかった。

 

まず概念。

 

サーバー内ではデフォルトなら5432番ポートで稼働している。通常ならこれにそのままつなぎにいけばいい。

しかしSSHの場合、デフォルトで22番ポート。普通に考えれば無理なのでは?と思うのだが、迂回することで接続が可能になる。

・クライアントとサーバーの間の「道」を作る。

 この道は蛇の道ではなく、正規のもの。つまり22番ポートを使っての道を確保する。ポートというと分かりにくいなら、「通常は国道5432号を通るのだが、今回は国道22号線を通る」というイメージで捉えた方が分かりやすいかも知れない。クライアント側にSSH対応の通信ソフトを入れて接続する。

 私は PuTTY というフリーソフトを使った。

・アプリケーションにその22番ポートを認識させる。

 <クライアント側>

 Pgadmin に22番ポートを認識させようとしても、対応していないのでダメ。どうするかというと、SSH対応の通信ソフトの「ポートフォワード(ポートフォワーディング)機能」というものを使う。トンネリングとも言われる技術だ。やることは「Pgadmin からの接続を受け付け、22番への抜け道を作ってやる」ということをしてくれるのだ。Pgadminでは任意のポート番号(例えば5433)を指定する。SSH対応ソフトでは「その任意のポート(例えば5433番)を別のポート、この場合はSSHの22番ポートに変換する」という設定をする。そして実際にその接続を起動するのだ。

 <サーバー側>

 PostgreSQLが暗号化されたポートからのリクエストも受け付けるよう設定変更をするのだ。設定ファイルを書き換えてデータベースを再起動する。 

 

 日本語のサイトではサーバー側の設定を書いていなくて時間が掛かった。接続できたときは「よっしゃ!」と嬉しくなった。概念を理解すれば腑に落ちる。後付であるが、先に理解できていたらもっと早くできたろう。

 

 場合によっては証明書が必要であったりもする。そこは今回やっていないので・・。

 そのうち画像、概念図、ファイル名などを加える予定である。