SSHとポートフォワーディングを利用して、リモートサーバのデータベースをローカルPCのpgAdminIIIで操作する

環境

背景

pgAdminIIIは,リモートサーバのデータベースに直接接続する機能を備えているが,通常はファイアウォール等のセキュリティ対策により,事前にpgAdminIII用のポート開放が必要である.そこで,サーバへのSSH接続機能を利用して,その通信経路をpgAdminIIIからも利用できるようにすることで,pgAdminIIIで直接リモートサーバへ接続したような環境を構築する.

ローカルPCからSSHでリモートサーバへ接続

TeraTermを起動すると,新しい接続画面が表示される.ホスト欄にリモートサーバの情報

 ssh://ユーザ名@ドメイン 

を入力する.OKボタンをクリックすると,パスワード入力画面が表示されるので,ユーザ名に対応したパスワードを入力する.

以下の画面が表示されれば,SSH接続が成功している.

ポートフォワーディングの設定

SSH接続後,TeraTermの設定メニューからSSH転送を選択する.

ポート転送メニュー画面で,追加ボタンをクリックし,新しいポートフォワーディングの設定を追加する.

このポートフォワーディングでは,リモートサーバのデータベース用ポートをSSH通信経路を介して,ローカルPCの指定ポートと接続する.上図の設定画面では,リモートサーバの5432ポート(PostgreSQLが使用するポート)をローカルPCの15432ポート(未使用ポート)と接続する設定を行っている.リモート側のホストには,クライアントからの視点ではなく,SSHサーバ(SSHD)が実行されているサーバから見たマシン名とポート番号を設定することが重要である.

以上で,TeraTermの設定は完了である.TeraTermを起動した状態でpgAdminIIIの設定を行う.TeraTermを終了するとSSH接続も切断され,ポートフォワーディングも利用できなくなる.

pgAdminIIIでの設定

pgAdminIIIを起動し,以下の項目で新しいサーバを登録する.

上記の設定で接続を実行する.データベースの内容が表示されれば接続が成功している.設定上はローカルPCの15432ポートへの接続のように見えるが,ポートフォワーディングにより,このポートはリモートサーバのデータベースポートと直接接続されている.ただし,SSH接続を介して通信を行うため,通信の安定性はSSH接続の状態に依存することに注意が必要である.また,接続時には必ずTeraTermを起動しておく必要がある.

以上により,SSHとポートフォワーディングを活用して,リモートサーバのデータベースをローカルPCのpgAdminIIIで操作することが可能となった.