Kombiner SSH-tunnel og RDS-forbindelse på AWS uden fejl - Trin-for-trin guide

Hvordan kan disse to kommandoer kombineres i en enkelt funktion, så der oprettes en tunnel til en RDS-instans på AWS gennem en EC2-instans, og der derefter oprettes forbindelse til databasen uden at få fejlmeddelelsen "Connection refused"?

For at kombinere to kommandoer i en enkelt funktion til at oprette en tunnel til en RDS-instans på AWS gennem en EC2-instans og oprette forbindelse til databasen uden fejlmeddelelsen "Connection refused", kan du bruge et bash-script, der først opretter SSH-tunnelen og derefter opretter forbindelse til RDS-databasen.

Sådan kombineres to kommandoer i en enkelt funktion for at oprette en tunnel til en RDS-instans på AWS gennem en EC2-instans og oprette forbindelse til databasen uden fejlmeddelelsen "Connection refused"

For at kombinere de to kommandoer i en enkelt funktion, kan du bruge et script, der først opretter SSH-tunnelen og derefter opretter forbindelse til RDS-databasen. Her er en trin-for-trin guide:

  1. Opret SSH-tunnel:
    • Brug SSH til at oprette en tunnel fra din lokale maskine til EC2-instansen.
    • Forward den relevante port fra EC2-instansen til RDS-instansen.
  2. Opret forbindelse til RDS-databasen:
    • Brug en databaseklient til at oprette forbindelse til RDS-databasen gennem den oprettede tunnel.

Her er et eksempel på et bash-script, der kombinerer disse trin:


#!/bin/bash

# Variabler
EC2_USER="ec2-user"
EC2_HOST="your-ec2-instance.amazonaws.com"
RDS_HOST="your-rds-instance.amazonaws.com"
LOCAL_PORT=5432
REMOTE_PORT=5432
DB_USER="your-db-user"
DB_NAME="your-db-name"

# Opret SSH-tunnel
ssh -f -N -L ${LOCAL_PORT}:${RDS_HOST}:${REMOTE_PORT} ${EC2_USER}@${EC2_HOST}

# Vent et øjeblik for at sikre, at tunnelen er oprettet
sleep 5

# Opret forbindelse til RDS-databasen
psql -h localhost -p ${LOCAL_PORT} -U ${DB_USER} -d ${DB_NAME}

Forklaring af scriptet:

  • EC2_USER: Brugernavnet til EC2-instansen.
  • EC2_HOST: Værtsnavnet eller IP-adressen til EC2-instansen.
  • RDS_HOST: Værtsnavnet eller IP-adressen til RDS-instansen.
  • LOCAL_PORT: Den lokale port, der skal forwardes.
  • REMOTE_PORT: Den port på RDS-instansen, der skal forwardes.
  • DB_USER: Brugernavnet til databasen.
  • DB_NAME: Navnet på databasen.

Dette script opretter først en SSH-tunnel fra din lokale maskine til EC2-instansen og forwarder den relevante port til RDS-instansen. Derefter opretter det forbindelse til RDS-databasen gennem den oprettede tunnel ved hjælp af psql-kommandoen.

Bemærk: Sørg for, at du har de nødvendige tilladelser og sikkerhedsgrupper konfigureret korrekt i AWS for at tillade SSH-adgang til EC2-instansen og databaseadgang til RDS-instansen.