Ich möchte RazorSQL verwenden, um eine Verbindung zu meiner Datenbank herzustellen, die auf einem Remote-Server ausgeführt wird. Ich erstelle einen SSH-Tunnel auf meinem localhost mit dem folgenden Befehl:
ssh -L 1111:remote.server.com:5432 [email protected]
Ich konfiguriere meine Verbindung über die RazorSQL-Benutzeroberfläche und gebe localhost
als Host und 1111
Als Port an. Wenn ich auf "Verbinden" klicke, erscheint folgende Fehlermeldung:
ERROR: An error occurred while trying to make a connection to
the database:
JDBC URL: jdbc:postgresql://localhost:1111/myuser
FATAL:
no pg_hba.conf entry for Host "aaa.bbb.ccc.ddd",
user "myuser", database "mydatabase", SSL off
dabei ist aaa.bbb.ccc.ddd
die IP-Adresse eines Remote-Servers.
Außerdem darf ich den Inhalt meiner pg_hba.conf
- Datei nicht ändern. So sieht es im Moment aus:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
@[email protected]# "local" is for Unix domain socket connections only
@[email protected] all all @[email protected]
# IPv4 local connections:
Host all all 127.0.0.1/32 @[email protected]
# IPv6 local connections:
Host all all ::1/128 @[email protected]
Kann ich mit meinem aktuellen Setup eine Verbindung zum Datenbankserver über einen SSH-Tunnel herstellen, ohne die Serverkonfiguration zu ändern?
Ihre pg_hba.conf scheint Verbindungen von localhost zuzulassen. Der einfachste Weg, um zu bewirken, dass Ihre SSH-Tunnelverbindungen von localhost angezeigt werden, besteht darin, sie zu localhost zu machen.
Der folgende SSH-Befehl stellt eine Verbindung zu remote.example.com als Benutzer "user" her und veranlasst Ihren ssh-Client, localhost, Port 1111/tcp, abzuhören. Alle Verbindungen zu diesem Port werden über den SSH-Tunnel weitergeleitet, und auf der SSH-Serverseite werden die Verbindungen zu localhost, Port 5432/tcp, hergestellt. Da wir eine Verbindung zu localhost herstellen, scheinen die Verbindungen ebenfalls von localhost zu stammen und sollten mit Ihrer vorhandenen pg_hba.conf-Zeile übereinstimmen.
ssh -L 1111:localhost:5432 [email protected]
Wenn dies ein Tunnel mit langer Laufzeit sein soll, würde ich die Verwendung von autossh empfehlen
Verwenden Sie zum Herstellen einer Verbindung mit dem psql-Client auf dem Host, auf dem Sie den ssh-Client ausführen, Folgendes:
psql -h localhost -p 1111 -U your-db-username database-name
Sie sollten dann aufgefordert werden, das Kennwort Ihres Datenbankbenutzers einzugeben.
Alternativ können Sie einer Datei mit dem Namen .pgpass
In Ihrem Ausgangsverzeichnis auf dem Client, auf dem Sie psql ausführen, die folgende Zeile hinzufügen:
localhost:1111:database-name:your-db-user:your-db-password