SSH経由でリモートPostgreSQLデータベースに接続できない

SSH経由でリモートPostgreSQLデータベースに接続できない

pgAdmin3 GUI 経由で、ポート 5432 のリモート サーバー myHost 上の Postgresql データベースに接続しようとしています。

サーバ側 :

  • postgresql ロールに一致する Unix myUser があります。
  • pg_hba.conf は次の通りです:
    local all all tr​​ust
    host all all 127.0.0.1/32 trust

クライアント側 :

  • SSHトンネルを開きます: ssh -L 3333:myHost:5432 myUser@myHost
  • pgAdmin3 (または psql -h localhost -p 3333 ) 経由でサーバーに接続します。

次のエラーメッセージが表示されます:
サーバーが予期せず接続を閉じました。これは、要求の処理前または処理中にサーバーが異常終了したことを意味します。

psql -h localhost -p 3333 --dbname=myDB --user=mySuperUser を使用してスーパーユーザー ロールで特定のデータベースにアクセスしようとしましたが、成功しませんでした。

セットアップで何を忘れたのでしょうか?
ありがとうございます

答え1

リモート ホストがトンネリングを許可しているかどうかを確認します。次のコマンドで、クライアントでトンネルが拒否されているかどうかを確認できます。

ssh -v -L 3333:myHost:5432 myUser@myHost

答え2

私の場合、問題はトンネルが IPv6 アドレスで終了していたことです。

ssh -L 5434:localhost:5432 user@server

localhost を、以前使用されていたと想定されるアドレスに置き換えるだけで十分でした。

ssh -L 5434:127.0.0.1:5432 user@server

私の人生の 15 分が無駄になりました。:) これで他の人の時間が節約できれば幸いです...

答え3

まだ解決策を探している人がいたら:

/etc/ssh/sshd_config で設定してみてください:

AllowTcpForwarding yes
GatewayPorts yes

それから:

service sshd restart

答え4

トンネルのローカル側で選択したポートと同じポートでリッスンしている Postgres のローカル インスタンスに実際に接続していないことを確認してください。

ローカルポートが使用中の場合、sshエラーメッセージが表示され、トンネルの設定がスキップされます。ただし、リモートサーバーへの接続は継続されるため、エラーが画面から消えてしまう可能性があります。接続は可能なので、最後の手段としてリモートPostgresを完全に停止して、次の操作を実行できることを確認するまで、トンネルに問題があるとは考えられません。まだ接続する。

どうして私がそれを知っているのか聞かないでください。

関連情報