金子邦彦研究室情報工学全般PostgreSQL の利用SSHとポートフォワーディングを利用して、リモートサーバのデータベースをローカルPCのpgAdminIIIで操作する

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

環境

背景

pgAdminIIIでは直接リモートサーバのデータベースに接続する機能を備えているが、通常ファイアウォール等のセキュリティの関係で、予めpgAdminIII用にポート開放しておくなどしておかないと実現できない。そこで、サーバへSSH接続出来ることを利用して、その回線をpgAdminIIIからも利用出来るようにすることで、あたかもpgAdminIIIで直接リモートサーバへ接続したかのような状況を作り出す

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

TeraTermを起動すると次のような画面から、新しい接続を求められる。 ホスト欄にリモートサーバについての情報

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

を入力する。OKを押すと次の画面でパスワードを求められるので、ユーザ名に対応したパスワードを入力する。

[image]

次のような画面が現れればSSH接続成功である

[image]

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

[image]

SSHログインしたあと、TeraTermの設定メニューよりSSH転送を選択する

[image]

ポート転送メニュー画面が現れたら、追加ボタンを押し、新しいポートフォワーディングの設定を追加する。

[image]

今回のポートフォワーディングのイメージは、リモートサーバのデータベース用のポートをSSH回線を通して、ローカルPCの任意のポートとつなぐイメージである。上図の設定画面では、 リモートサーバの5432ポート(PostgreSQLが使用しているポート)を ローカルPCの15432ポート(未使用ポート)とつなぐ設定をしている。 リモート側のホストにはクライアントから見た設定ではなく SSHサーバ(SSHD)が実行されているサーバから見たマシン名とポート番号を設定することに注意する。

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

pgAdminIIIでの設定

pgAdminIIIを起動し、新しいサーバの登録を行う

上記の設定で接続を試みる。データベースの内容が閲覧出来れば接続成功である。設定上はローカルPCの15432ポートへ接続しているだけのようにみえるが、ポートフォワーディングを行っているため、このポートはリモートサーバのデータベースポートへと直接繋がっている。ただし、SSH接続回線を介して通信を行っているため、通信の安定具合はSSH接続の影響を受けることに注意する。当然、接続するたびに、TeraTermは起動しておかなければならない。

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