3.8. SSH トンネルを使った安全な TCP/IP 接続

謝辞: Gene Selkov,Jr.()から Eric Marsden の質問に対する返事として1999-09-08 に書かれた 電子メールからアイデアを頂きました。

ssh はクライアントと Postgresサーバ間のネットワークを 暗号化するために使うことができます。正しく行われると、 これは十分に安全なネットワーク接続を行うことを可能にします。

まずsshサーバが Postgresと同じマシン上で正しく起動 しており同じユーザとして ssh を使って同じユーザでログインできる ことを確かめて下さい。そして下記のようなコマンドでクライアントマシン から安全なトンネルを設立することができます。

> ssh -L 3333:foo.com:5432 joe@foo.com
-L 引数の最初の数字、3333、は自分自身のトンネル 側のポート番号で、自由に選択することが可能です。 二番目の番号、5432はトンネルのリモート側で、自分がバックエンドで 使っているポート番号です。ポート番号間の名前やアドレスはこれから 接続しようとしているデータベースサーバのホストです。このトンネル を使ってデータベースサーバに接続するためには、ローカルマシンの ポート 3333 に接続します。
psql -h localhost -p 3333 template1
データベースサーバにとっては、ユーザが実際に joe@foo.comであるかのように見え、そのユーザのために 設定された証明手続を使います。トンネルの設定が成功するためには、 ssh をターミナルセッションの設定のために使用したのと同様に、 joe@foo.com として ssh を通して接続することが許可されていなければ いけません。

Tip: ここまでで説明されてきたような概念と似た手続きを使った 安全なトンネルを提供できる他の製品もいくつか存在します。