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: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
しかし、ここでは、ホスト名を解決できません...
解決策はありますか?
このコマンド:
ssh -L 54320:Server_A:5432 user@Server_B
よさそうですが、これを行うと:
psql -p 54320 -d db_name -U user
sshトンネルは使用されません。Unixではデフォルトでpsql
は nixドメインソケット に接続するため、前述のエラーメッセージ( "... accepting connections on Unixドメインソケット...」)
-h localhost
オプションがありません。試してください:
psql -p 54320 -d db_name -U user -h localhost
以前にlocalhost:54320
とServer_A:5432
からServer_B
までのsshトンネルを確立していた場合、これはServer_A:5432
のpostgresに到達します。