RazorSQLを使用して、リモートサーバーで実行されているデータベースに接続したいと思います。次のコマンドを使用して、localhostにSSHトンネルを作成します。
ssh -L 1111:remote.server.com:5432 [email protected]
RazorSQLのGUIを介して接続を構成し、localhost
をホストとして、1111
をポートとして指定します。 [接続]をクリックすると、次のエラーメッセージが表示されます。
ERROR: An error occurred while trying to make a connection to
the database:
JDBC URL: jdbc:postgresql://localhost:1111/myuser
FATAL:
no pg_hba.conf entry for Host "aaa.bbb.ccc.ddd",
user "myuser", database "mydatabase", SSL off
ここで、aaa.bbb.ccc.ddd
はリモートサーバーのIPアドレスです。
さらに、pg_hba.conf
ファイルの内容を変更することはできません。現時点では次のようになっています。
# TYPE DATABASE USER CIDR-ADDRESS METHOD
@remove-line-for-nolocal@# "local" is for Unix domain socket connections only
@remove-line-for-nolocal@local all all @authmethod@
# IPv4 local connections:
Host all all 127.0.0.1/32 @authmethod@
# IPv6 local connections:
Host all all ::1/128 @authmethod@
現在の設定を使用し、サーバーの構成を変更せずに、SSHトンネル経由でデータベースサーバーに接続することは可能ですか?
Pg_hba.confは、localhostからの接続を許可しているようです。 SSHトンネル接続をlocalhostから表示させる最も簡単な方法は、それらをtolocalhostにすることです。
次のSSHコマンドは、ユーザー「user」としてremote.example.comに接続し、sshクライアントがlocalhost、ポート1111/tcpでリッスンするようにします。そのポートへの接続はすべてsshトンネルを介して転送され、sshサーバー側ではローカルホストのポート5432/tcpに接続されます。 localhostに接続しているため、接続はlocalhostからでもあるように見え、既存のpg_hba.conf行と一致するはずです。
ssh -L 1111:localhost:5432 [email protected]
これが長時間実行されるトンネルであると予想される場合は、 autossh を使用することをお勧めします
Sshクライアントを実行しているホストでpsqlクライアントを使用して接続するには、次のようなものを使用します。
psql -h localhost -p 1111 -U your-db-username database-name
その後、データベースユーザーのパスワードの入力を求められます。
または、psqlを実行しているクライアントのホームディレクトリにある.pgpass
というファイルに次の行を追加できます。
localhost:1111:database-name:your-db-user:your-db-password