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

概要

pgAdmin 4 は、リモートサーバのPostgreSQLに直接接続する機能を備えているが、通常はファイアウォールなどのセキュリティ対策により、事前にPostgreSQL用のポートを開放する必要がある。そこで、サーバへのSSH接続の通信経路を pgAdmin 4 からも利用できるようにすることで、あたかも直接リモートサーバへ接続したような環境を構築する。この方式では、データベースの通信がSSHで暗号化される(通信内容が第三者に読み取られないよう保護される)利点もある。

目次

【サイト内の関連ページ】

PostgreSQL 活用ガイド

環境

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

Tera Term を起動すると、新しい接続の画面が表示される。ホスト欄にリモートサーバの情報を、次の形式で入力する。

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

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

次の画面が表示されれば、SSH接続に成功している。

ポートフォワーディングを設定する

SSH接続後、Tera Term の設定メニューから「SSH転送」を選択する。

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

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

以上でTera Term側の設定は完了である。Tera Term を起動した状態で、次のpgAdmin 4 の設定を行う。Tera Term を終了するとSSH接続も切断され、ポートフォワーディングも利用できなくなる。

pgAdmin 4 で接続を設定する

pgAdmin 4 を起動し、新しいサーバを次の項目で登録する。

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

以上により、SSHとポートフォワーディングを活用して、リモートサーバのデータベースをローカルPCの pgAdmin 4 で操作できるようになった。