SSH 및 AWS SSM(시스템 관리자)을 사용하여 프라이빗 RDS 인스턴스에 연결

4444 단어 sshawsrds

목적



프라이빗 서브넷에 있으므로 공개적으로 액세스할 수 없는 AWS RDS 인스턴스가 있고 배스천 서버를 설치하거나 공개적으로 대면하는 ec2 인스턴스가 없는 상태에서 이 RDS 인스턴스에 원격으로 연결하려고 합니다.

이 기사에서는 다음과 같은 가정을 합니다.
  • 외부 액세스를 제공하는 요새 인스턴스가 없습니다.
  • 외부 액세스를 제공하는 보안 그룹이 없습니다.
  • RDS 인스턴스에 액세스할 수 있는 프라이빗 서브넷에 ec2 인스턴스가 있습니다
  • .
  • 이 ec2 인스턴스는 Ubuntu를 실행 중입니다.

  • 전제 조건


  • EC2 인스턴스에 설치ec2-instance-connect - AWS Session Manager를 사용하여 기존 ec2 인스턴스에 연결하고 실행하면 됩니다.

  •   apt-get install ec2-instance-connect
    



    참고: Autoscaling 그룹 또는 블루/그린 배포를 사용하는 경우 이를 ec2 사용자 데이터에 추가할 수 있습니다. 새 서버가 생성될 때 ec2-instance-connect가 설치되었는지 확인하십시오.
  • 설치 session-manager-plugin 로컬 ( https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html )

  • SSH 키 생성



    ec2 인스턴스에 연결하려면 SSH가 필요합니다. 이미 사용하려는 항목이 있는 경우 다음 단계로 건너뛸 수 있습니다. 그렇지 않은 경우 다음을 통해 만들 수 있습니다.

    ssh-keygen -f my_rsa
    


    그러면 my_rsamy_rsa.pub 라는 SSH 개인 및 공개 키가 생성됩니다.

    SSH 키를 대상 인스턴스에 푸시



    ec2 인스턴스에 연결하려면 다음을 통해 SSH 공개 키를 원하는 ec2 인스턴스에 보내야 합니다.

    aws ec2-instance-connect send-ssh-public-key \
      --instance-id i-0c6e3bd52bbb2373c \
      --availability-zone eu-west-1a \
      --instance-os-user ubuntu \
      --ssh-public-key file:///my_rsa.pub 
    


    참고: SSH 공개 키는 인스턴스 메타데이터에서 60초 동안 한 번만 사용할 수 있습니다. 인스턴스에 성공적으로 연결하려면 이 기간 내에 SSH를 사용하여 연결해야 합니다. 키가 만료되기 때문에 이전과 같이 이러한 키를 직접 추적하거나 관리할 필요가 없습니다.

    세션 시작



    이제 AWS System Manager 세션을 시작하고 포트 전달을 활성화할 수 있습니다. 이 경우 로컬 시스템의 포트9999를 대상 ec2 인스턴스의 포트22로 전달합니다.

    aws ssm start-session \
      --target i-0c6e3bd52bbb2373c \
      --document-name AWS-StartPortForwardingSession \
      --parameters '{"portNumber":"22", "localPortNumber":"9999"}' 
    


    참고: 이것은 9999의 포트localhost에서 22의 포트i-07edf50160ab3172로 터널링 연결을 유지하기 때문에 정지된 것처럼 보입니다.

    RDS에 대한 터널 열기(다른 터미널에서)



    이제 위에서 생성한 AWS System Manager 세션을 통해 RDS 인스턴스에 대한 터널을 열어야 합니다.

    ssh ubuntu@localhost \
    -p 9999 \
    -N \
    -L 3388:production-database.inzy2e1e4v6s.eu-west-1.rds.amazonaws.com:3306
    


    참고: 3388의 포트localhost3306의 포트production-database.inzy2e1e4v6s.eu-west-1.rds.amazonaws.com 사이의 터널링 연결을 유지하기 때문에 정지된 것처럼 보입니다.

    RDS 인스턴스에 연결



    위의 단계가 완료되면 이제 선호하는 데이터베이스 클라이언트(SequelPro, HeidiSQL 등)를 사용하여 데이터베이스에 연결할 수 있습니다. 연결 세부 정보는 다음과 같습니다.
  • 호스트: i-07edf50160ab3172
  • 포트: localhost
  • 사용자 이름/비밀번호: 액세스하려는 라이브 데이터베이스에 따라

  • 이제 RDS 인스턴스에 액세스할 수 있습니다.

    참고문헌


  • EC2 인스턴스에 대한 SSH 액세스를 위해 Amazon EC2 Instance Connect 사용 - https://aws.amazon.com/blogs/compute/new-using-amazon-ec2-instance-connect-for-ssh-access-to-your-ec2-instances/
  • AWS CLI용 세션 관리자 플러그인 설치 - https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
  • 좋은 웹페이지 즐겨찾기