SSHとポートフォワーディングを利用して、リモートサーバのデータベースをローカルPCのpgAdminIIIで操作する
環境
- ローカルPC:Windows系OS
- SSHが使用可能なターミナルソフト:TeraTerm等
- データベースクライアントソフト:pgAdminIII
- リモートサーバ:Linux系OS SSH接続が可能であること
背景
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を起動し,以下の項目で新しいサーバを登録する.
- 名前:任意の名前
- ホスト:localhost(リモートサーバのアドレスは指定しない)
- Port:任意の数値(TeraTermでポートフォワーディング時に設定した値)
- DBメンテナンス:リモートデータベースのデータベース名
- ユーザー名:リモートデータベースのユーザ名
- パスワード:リモートデータベースのユーザに対応したパスワード
- 残りの項目はデフォルト値
上記の設定で接続を実行する.データベースの内容が表示されれば接続が成功している.設定上はローカルPCの15432ポートへの接続のように見えるが,ポートフォワーディングにより,このポートはリモートサーバのデータベースポートと直接接続されている.ただし,SSH接続を介して通信を行うため,通信の安定性はSSH接続の状態に依存することに注意が必要である.また,接続時には必ずTeraTermを起動しておく必要がある.
以上により,SSHとポートフォワーディングを活用して,リモートサーバのデータベースをローカルPCのpgAdminIIIで操作することが可能となった.