Wie stelle ich mit einem Bastion-Host von meinem Linux- oder macOS-Rechner aus eine Verbindung zu meiner Amazon RDS DB-Instance her?
Ich habe eine Amazon Relational Database Service (Amazon RDS) DB-Instance, die nicht öffentlich zugänglich ist. Ich möchte von meinem Linux- oder macOS-Rechner aus eine Verbindung zu ihr herstellen.
Kurzbeschreibung
Um eine Verbindung zu einer privaten Amazon-RDS- oder Amazon-Aurora-DB-Instance herzustellen, empfiehlt es sich, ein VPN oder AWS Direct Connect zu verwenden. Wenn du weder ein VPN noch AWS Direct Connect verwenden kannst, kannst du stattdessen einen Bastion-Host verwenden. Du kannst diese Methode auch von einem Linux- oder macOS-Rechner aus verwenden, um eine Verbindung zu Amazon Aurora Serverless und Amazon-RDS-Proxy von außerhalb der Virtual Private Cloud (VPC) der Instance herzustellen.
Lösung
Um einen Bastion-Host zu verwenden, um von einem Linux- oder macOS-Rechner aus eine Verbindung zu deiner Amazon RDS DB-Instance herzustellen, befolge diese Schritte:
-
Stelle deine Amazon RDS DB-Instance auf privat ein. Dazu ändere die DB-Instance mit den folgenden Parametern:
Setze den Parameter publicly accessible (öffentlich zugänglich) auf no (nein) und verwende private Subnetze.
Verwende kein Internet gateway - igw (Internet-Gateway - igw) in deinen Routing-Tabellen.
Konfiguriere die Sicherheitsgruppe so, dass sie für die DB die Ports 5432 und 3306 von allen IP-Adressen zulässt. -
Starte die kleinste verfügbare EC2-Instance in derselben VPC wie deine DB-Instance:
Verwende Internet gateway - igw (Internet-Gateway - igw) in deinen Routing-Tabellen. Dieser Wert öffnet deine Amazon Elastic Compute Cloud (Amazon EC2)-Instance für das Internet, wenn sie sich in einem öffentlichen Subnetz befindet.
Richte die Sicherheitsgruppe so ein, dass sie die IP-Adresse des Linux- oder macOS-Rechners zulässt, von dem aus du eine Verbindung herstellen möchtest. -
Um einen Tunnel für die Konnektivität zu erstellen, führe den folgenden Befehl auf deinem Linux- oder macOS-Rechner aus:
Syntax 1: ssh -i <identity_file> -f -l <bastion-host-username> -L <local-port-you-connect-to>:<rds-endpoint>:<rds:listening-port> <bastion-host-public-ip> -v Example command: ssh -i "private_key.pem" -f -l ec2-user -L 5432:172.31.39.62:5432 3.133.141.189 -vWenn du diesen Befehl für das SSH-Tunneling ausführst, konfiguriere die folgenden Einstellungen mit diesen Werten:
debug1: Lokale Verbindungen zu LOCALHOST: 5432 an Remote-Adresse 172.31.39.62:5432 weitergeleitet
debug1: Lokale Weiterleitung hört auf 127.0.0.1 Port 5432
debug1: Kanal 0: neuer [port listener]
debug1: Lokale Weiterleitung hört auf ::1 Port 5432Syntax 2: ssh -i "Private_key.pem" -f -N -L 5432:RDS_Instance_Endpoint:5432 ec2-user@EC2-Instance_Endpoint -v Example command: ssh -i "private.pem" -f -N -L 5432:pg115.xxxx.us-east-2.rds.amazonaws.com:5432 ec2-user@ec2-xxxx-xxx9.us-east-2.compute.amazonaws.com -v -
Du kannst nun von deinem lokalen Rechner aus eine Verbindung zu deiner DB-Instance herstellen. Der folgende Beispielbefehl stellt eine Verbindung zu PostgreSQL her, aber du kannst dieselbe Methode verwenden, um eine Verbindung zu MySQL oder zu einer beliebigen anderen Engine herzustellen:
Syntax - psql -hlocalhost -Upostgres -p<local-port-you-connect-to> -d postgres -h = localhost -U = the username present in the DB for connectivity -p = 'local-port-you-connect-to' from the SSH Tunneling command -d = Any DB, user who wants to connect. Example command - a483e73d651f:.ssh rahul_saha$ psql -hlocalhost -Upostgres -p5432 -d postgres Password for user postgres: psql (12.1, server 11.5) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. postgres=> \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin=CTc/rdsadmin template0 | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/rdsadmin + | | | | | rdsadmin=CTc/rdsadmin template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows) $ psql -hlocalhost -Upostgres -p -d postgres $ mysql -h127.0.0.1 -uroot -p
Hinweis: Wenn du das Schlüsselwort localhost verwendest, wenn du dich mit der DB-Instance verbindest, versucht MySQL, den Socket für die Verbindung zu verwenden. Stelle sicher, dass du den Hostnamen 127.0.0.1 verwendest, um auf eine MySQL DB-Instance zuzugreifen. Weitere Informationen findest du unter Can't connect to [local] MySQL server (Verbindung zum [local] MySQL-Server kann nicht hergestellt werden) auf der MySQL-Website.
Ähnliche Informationen
Linux bastion hosts on AWS (Linux-Bastion-Hosts auf AWS)
- Themen
- Database
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 6 Monaten
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor 2 Jahren