kann keine Verbindung über SSH zu einer Remote-Postgresql-Datenbank herstellen

kann keine Verbindung über SSH zu einer Remote-Postgresql-Datenbank herstellen

Ich versuche, über die pgAdmin3-GUI eine Verbindung zu einer Postgresql-Datenbank auf einem Remote-Server myHost auf Port 5432 herzustellen.

Serverseite:

  • Ich habe einen Unix-MyUser, der einer PostgreSQL-Rolle entspricht.
  • pg_hba.conf ist:
    lokal alle alle vertrauen
    Host alle alle 127.0.0.1/32 vertrauen

Clientseite:

  • Ich öffne einen SSH-Tunnel: ssh -L 3333:myHost:5432 myUser@myHost
  • Ich verbinde mich mit dem Server über pgAdmin3 (oder über psql -h localhost -p 3333).

Ich erhalte folgende Fehlermeldung:
Der Server hat die Verbindung unerwartet geschlossen. Dies bedeutet wahrscheinlich, dass der Server vor oder während der Verarbeitung der Anforderung abnormal beendet wurde.

Ich habe versucht, mit psql -h localhost -p 3333 --dbname=myDB --user=mySuperUser mit der Superuser-Rolle auf eine bestimmte Datenbank zuzugreifen, jedoch ohne Erfolg.

Was habe ich beim Setup vergessen?
Danke

Antwort1

Überprüfen Sie, ob der Remote-Host Tunneling zulässt. Sie können beim Client prüfen, ob der Tunnel abgelehnt wird mit:

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

Antwort2

In meinem Fall bestand das Problem darin, dass der Tunnel mit einer IPv6-Adresse endete:

ssh -L 5434:localhost:5432 user@server

Es genügte, localhost durch die Adresse zu ersetzen, von der ich annahm, dass sie zuvor verwendet wurde:

ssh -L 5434:127.0.0.1:5432 user@server

15 Minuten meines Lebens den Bach runter. :) Hoffe, das spart jemand anderem Zeit …

Antwort3

Falls noch jemand nach einer Lösung sucht:

Versuchen Sie, in /etc/ssh/sshd_config Folgendes einzustellen:

AllowTcpForwarding yes
GatewayPorts yes

Dann:

service sshd restart

Antwort4

Stellen Sie sicher, dass Sie nicht tatsächlich eine Verbindung zu einer lokalen Postgres-Instanz herstellen, die auf demselben Port lauscht, den Sie für das lokale Ende des Tunnels ausgewählt haben.

Wenn der lokale Port verwendet wird, sshwird eine Fehlermeldung ausgegeben und die Einrichtung des Tunnels übersprungen. Es wird jedoch weiterhin eine Verbindung zum Remote-Server hergestellt, was dazu führen kann, dass der Fehler vom Bildschirm verschwindet. Da Sie eine Verbindung herstellen können, vermuten Sie nicht, dass etwas mit dem Tunnel nicht stimmt, bis Sie als letzten Ausweg den Remote-Postgres vollständig stoppen und feststellen, dass SieTrotzdemverbinden.

Fragen Sie mich nicht, woher ich das weiß.

verwandte Informationen