SSHとポートフォワーディングを利用して、リモートサーバのデータベースをローカルPCのpgAdmin 4で操作する
【概要】
pgAdmin 4 は、リモートサーバのPostgreSQLに直接接続する機能を備えているが、通常はファイアウォールなどのセキュリティ対策により、事前にPostgreSQL用のポートを開放する必要がある。そこで、サーバへのSSH接続の通信経路を pgAdmin 4 からも利用できるようにすることで、あたかも直接リモートサーバへ接続したような環境を構築する。この方式では、データベースの通信がSSHで暗号化される(通信内容が第三者に読み取られないよう保護される)利点もある。
【目次】
【サイト内の関連ページ】
環境
- ローカルPC:Windows系OS
- SSHが使用可能なターミナルソフト:Tera Term など
- データベースクライアントソフト:pgAdmin 4
- リモートサーバ:Linux系OS。SSH接続が可能であること
ローカル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 を起動し、新しいサーバを次の項目で登録する。
- 名前:任意の名前
- ホスト:localhost(リモートサーバのアドレスは指定しない)
- ポート:TeraTermのポートフォワーディングで設定した値(本例では15432)
- メンテナンスデータベース:リモートのデータベース名
- ユーザー名:リモートのデータベースユーザ名
- パスワード:リモートのデータベースユーザに対応したパスワード
- 残りの項目はデフォルト値
この設定で接続を実行する。データベースの内容が表示されれば、接続に成功している。設定上はローカルPCの15432ポートへの接続に見えるが、ポートフォワーディングにより、このポートはリモートサーバのデータベースポートと接続されている。ただし、通信はSSH接続を介するため、通信の安定性はSSH接続の状態に依存する点に注意する。また、接続時にはTera Term を起動しておく必要がある。
以上により、SSHとポートフォワーディングを活用して、リモートサーバのデータベースをローカルPCの pgAdmin 4 で操作できるようになった。