pgAdmin3 GUI 経由で、ポート 5432 のリモート サーバー myHost 上の Postgresql データベースに接続しようとしています。
サーバ側 :
- postgresql ロールに一致する Unix myUser があります。
- pg_hba.conf は次の通りです:
local all all trust
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を完全に停止して、次の操作を実行できることを確認するまで、トンネルに問題があるとは考えられません。まだ接続する。
どうして私がそれを知っているのか聞かないでください。