Ich habe eine Netzwerkbastion, die unter öffentlich zugänglich ist, example.compute-1.amazonaws.com
und eine private Postgres-Datenbankinstanz unterpostgres.example.us-east-1.rds.amazonaws.com:5432
Ich kann mit in die Bastion ssh
$ ssh -i key.pem [email protected]
Sobald ich in der Bastion bin, erstelle ich einen SSH-Tunnel mit:
$ ssh -i key.pem -L 5432:postgres.example.us-east-1.rds.amazonaws.com:5432 [email protected]
Ich kann dann überprüfen, ob der Tunnel funktioniert, indem ich mit localhost von der Bastion aus eine Verbindung zur Datenbank herstelle:
$ psql -p 5432 -h localhost -U postgres
Ich kann jedoch keine Remoteverbindung mit der Datenbank herstellen (ohne in der Bastion zu sein).
$ psql -p 5432 -h example.compute-1.amazonaws.com -U postgres
psql: could not connect to server: Connection refused
Is the server running on host "example.compute-1.amazonaws.com" () and accepting
TCP/IP connections on port 5432?
Ich habe die Sicherheitsgruppe der Bastion so konfiguriert, dass eingehender Datenverkehr auf Port 5432 akzeptiert wird.
Benutze ich ssh -L
richtig? Soll ich es außerhalb der Bastion benutzen? Jeder Rat wäre sehr dankbar.
quelle
Das hat bei mir funktioniert. Stellen Sie sicher, dass Sie den psql-Client lokal installiert haben.
Stellen Sie beim Erstellen Ihrer Datenbankinstanz auf aws Folgendes fest:
Ich musste auch eine Sicherheitsgruppe für die VPC erstellen, in der sich die Datenbank befand. Stellen Sie nach dem Erstellen sicher, dass Ihre Datenbankinstanz diese für ihre Sicherheitsgruppe verwendet. Die Sicherheitsgruppe hat die folgenden Regeln:
quelle