web-dev-qa-db-ja.com

別のマシンへのポート転送を使用したリモートPostgreSQLサーバーへのアクセス

PostgreSQLが実行されているServer_Aにアクセスしようとします。このサーバーはローカルネットワーク上にあるため、アクセス可能な同じネットワーク内のServer_Bからポートを転送する必要があります。

Server_BでpostgreSQlにアクセスするには、次のようにポートを簡単に転送できます。

ssh -L 54320:Server_A:5432 user@Server_B

そして別のターミナルで:

psql -p 54320 -d db_name -U user

私の問題は、Server_Bのネットワークに存在するマシンから行われた接続を再現したいことです。このマシンは、次のコマンドを使用して自分自身をデータベースに接続できます。

psql -h Server_A -p 5432 -d db_name -U user

私は実際に問題を抱えています:

Sshコマンドを使用して5432ポートを転送できません。

Sshコマンドに5432:Server_A:5432を挿入して5432ポートを転送すると、次のエラーが発生します。

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

ホスト名を解決できません:

server_Aからポートを直接転送する代わりに、_Server_Bからポートを転送して、psqlコマンドに-h引数を含めます。

ssh -L 5432:127.0.0.1:5432 user@Server_B

そして:

psql -h Server_A -p 5432 -d db_name -U user

しかし、ここでは、ホスト名を解決できません...

解決策はありますか?

3

このコマンド:

ssh -L 54320:Server_A:5432 user@Server_B

よさそうですが、これを行うと:

psql -p 54320 -d db_name -U user

sshトンネルは使用されません。Unixではデフォルトでpsqlnixドメインソケット に接続するため、前述のエラーメッセージ( "... accepting connections on Unixドメインソケット...」)

-h localhostオプションがありません。試してください:

   psql -p 54320 -d db_name -U user -h localhost

以前にlocalhost:54320Server_A:5432からServer_Bまでのsshトンネルを確立していた場合、これはServer_A:5432のpostgresに到達します。

3
Daniel Vérité