기록하는 공부

AWS 웹서버 인스턴스 생성 및 연결 본문

AWS

AWS 웹서버 인스턴스 생성 및 연결

SS_StudySteadily 2024. 1. 10. 00:04
728x90
반응형

 

 

웹서버 인스턴스 생성 및 연결

 

  • 퍼블릭노드와 프라이빗 노드 생성(그림 참조)
  • 퍼블릭 노드(Bastion)로 ssh 연결
    • S3에 업로드되어 있는 ssh 키 파일(.pem) 다운로드(CLI 접근)
    • 퍼블릭 노드에서 프라이빗 노드로 ssh 연결
    aws configure
    − aws s3 ls
    − aws s3 ls s3://bunketname
    − aws s3 cp s3://bunketname/PriKeyFileName .
    − ls
    − ssh -i sshPriKeyFileName ec2-user@PriNodeIP
    

 

  • 프라이빗 노드(PriNode)에서 S3 접근(NAT GW 없는 환경이라 가정)
    • EC2(프라이빗노드)에서 S3로 접근
      • $ aws configure
      • $ aws s3 ls --> X
  • VPC 엔드포인트 생성 : VPC > 엔드포인트 >> 엔드포인트 생성
    • AWS 서비스 : S3
    • 유형 : Gateway
    • 라우팅 테이블 : 기존 private 라우팅 테이블 연결 후 확인
  • VPC 엔드포인트를 이용한 프라이빗 접근
    • EC2(프라이빗노드)에서 S3로 접근
      • $ aws s3 ls --> O
  • 마무리
    • VPC 엔드포인트 삭제, S3 삭제, EC2들 종료

VPC 엔드포인트

 

 


 

 

1. 이전 실습에서 생성했던 MyVPC 이용

 

리소스맵으로 VPC 확인

 

2. 퍼블릭노드와 프라이빗 노드 생성

 

  • 이름 : Bastion (퍼블릭 노드 인스턴스)
  • AMI : Amazon Linux 2023 AMI
  • 인스턴스 유형 : t2.micro
  • 키 페어 새로 생성
    • 키 이름 : MyKP002
    • .pem (ssh)
  • 네트워크 설정
    • VPC : MyVPC (이전 실습에서 생성)
    • 서브넷 : MyPubSubnet (이전 실습에서 생성)
    • 퍼블릭 IP 자동 할당 : 활성화
    • 보안 그룹 생성 : SSH 허락
  • 나머지 설정 기본값 그대로 생성

 

  • 인스턴스 생성(프라이빗 노드 인스턴스)
    • 이름 : PriNode
    • AMI : Amazon Linux 2023 AMI
    • 인스턴스 유형 : t2.micro
    • 키 페어 : MyKP002 (Bastion 서버 만들 때 생성했던 키 페어)
    • 네트워크 설정
      • 네트워크 : MyVPC
      • 서브넷 : MyPriSubnet
      • 퍼블릭 IP 자동 할당 : 비활성화
      • 보안 그룹 생성 : 22번 포트 허락
    • 나머지 설정 기본값 그대로 생성

퍼블릭노드와 프라이빗 노드 생성

 

 

 

 

3. S3 생성 및 키 페어 파일 업로드

 

  • MyPubSubnet에 위치한 Bastion에서 MyPriSubnet에 있는 EC2에게 SSH 접근을 하려면 MyPriSubnet에 있는 EC2의 Private Key를 알아야 한다.
  • 하지만, 지금 Bastion에는 Private Key에 대한 정보가 없다.
  • 따라서, S3에 키페어를 생성할 때 다운로드 받았던 Private Key 파일을 업로드하여 Bastion에서 다운로드 받을 수 있도록 하는 작업 진행

 

  • 버킷 만들기
  • 본인 리전에 맞는 곳 설정
  • 유니크한 버킷 이름 설정
  • 나머지 기본 값 설정 그대로 생성
    • 버킷 이름 : mybucket0815

S3 버킷 생성 완료

 

 

  • 생성한 버킷에 키페어 Private Key 파일 업로드

키 페어 파일 MyKP002.pem 업로드

 

 

 

 

 

4. Bastion 서버에서 인스턴스 연결 진행

 

  • IAM > 사용자 > 액세스 키 생성
    • 액세스 키 복사
    • 비밀 액세스 키 복사

SSH 로그인을 위한 액세스 키 생성

 

 

  • EC2 > 인스턴스 > Bastion 선택 > 연결

Bastion 선택 후 연결 클릭

 

 

  • 인스턴스에 연결

인스턴스에 연결

 

 

  • ssh 로그인
[ec2-user@ip-10-0-1-186 ~]$ aws configure
AWS Access Key ID []: AKIAVVQJT76HENIIN5PY
AWS Secret Access Key []: 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
Default region name []: us-east-2
Default output format []: json
[ec2-user@ip-10-0-1-186 ~]$ aws s3 ls
2024-01-09 14:13:10 mybucket0815

 

 

  • 위에서 생성했던 버킷에 업로드했던 비밀키 확인 가능
[ec2-user@ip-10-0-1-186 ~]$ aws s3 ls s3://mybucket0815
2024-01-09 14:15:28       1674 MyKP002.pem

 

 

  • 해당 파일을 Bastion 서버에 복사하기
  • 이 과정을 통해서 Bastion 서버에서 PriNode 서버로 접근할 수 있는 Private Key 파일을 획득
[ec2-user@ip-10-0-1-186 ~]$ pwd
/home/ec2-user
[ec2-user@ip-10-0-1-186 ~]$ aws s3 cp s3://mybucket0815/MyKP002.pem .
download: s3://mybucket0815/MyKP002.pem to ./MyKP002.pem       
[ec2-user@ip-10-0-1-186 ~]$ ls -l
total 4
-rw-r--r--. 1 ec2-user ec2-user 1674 Jan  9 14:15 MyKP002.pem

 

ssh 로그인, s3 버킷에 프라이빗 키 파일 복사

 

 

 

 

5. 퍼블릭 노드(Bastion)로 ssh 연결 퍼블릭 노드에서 프라이빗 노드로 ssh 연결

 

  • 파일 권한 변경 후 ssh 로그인 시도
  • 이때, IP 주소는 PriNode의 IP 주소이다.
[ec2-user@ip-10-0-1-186 ~]$ ls -l
total 4
-rw-r--r--. 1 ec2-user ec2-user 1674 Jan  9 14:15 MyKP002.pem
[ec2-user@ip-10-0-1-186 ~]$ chmod 400 *
[ec2-user@ip-10-0-1-186 ~]$ ls -l
total 4
-r--------. 1 ec2-user ec2-user 1674 Jan  9 14:15 MyKP002.pem
[ec2-user@ip-10-0-1-186 ~]$ ssh -i ./MyKP002.pem ec2-user@10.0.3.117
The authenticity of host '10.0.3.117 (10.0.3.117)' can't be established.
ED25519 key fingerprint is SHA256:fSRtYste0TRwj81i8ibxwdoZEVAKCHSDNBz65wFi7Zo.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.3.117' (ED25519) to the list of known hosts.
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
[ec2-user@ip-10-0-3-117 ~]$

Bastion에서 PriNode로 접속

 

 

  • SSH 로그인, 프라이빗 노드에서 S3 접근 확인
  • 프라이빗 노드(PriNode)에서 S3 접근(NAT GW 없는 환경이라 가정)
    • EC2(프라이빗노드)에서 S3로 접근
      • $ aws configure
      • $ aws s3 ls --> X
    • 인증도 되고, 권한도 있지만 네트워크가 안되기 때문에 aws s3 ls 같은 명령어가 수행되지 않음
      • ctrl+c로 중지
[ec2-user@ip-10-0-3-117 ~]$ aws configure
AWS Access Key ID [None]: AKIAVVQJT76HENIIN5PY
AWS Secret Access Key [None]: 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
Default region name [None]: us-east-2
Default output format [None]: json
[ec2-user@ip-10-0-3-117 ~]$ aws s3 ls

S3 접근이 안되는 것을 확인 가능

 

 

 

 

6. VPC 엔드포인트 생성

 

  • VPC > 엔드포인트 > 엔드포인트 생성
  • 프라이빗 노드가 NAT나 IGW를 거치지 않고 S3와 통신하고 싶은 경우 VPC 엔드포인트 사용

 

  • VPC 대시보드로 이동 - 엔드포인트 클릭
    • 이름 : MyVE001
    • AWS 서비스 : S3
    • 유형 : Gateway
    • VPC : MyVPC
    • 라우팅 테이블 : 기존 private 라우팅 테이블 연결 후 확인

엔드포인트 생성

 

엔드포인트 생성

 

엔드포인트 생성 완료

 

 

 

 

7. VPC 엔드포인트를 이용한 프라이빗 접근

 

  • 5번 과정에서 중단되었던 aws s3 ls 명령어를 다시 실행
  • 성공적으로 결과가 출력되는 것을 확인 가능
[ec2-user@ip-10-0-3-117 ~]$ aws s3 ls
2024-01-09 14:13:10 mybucket0815

엔드포인트 이용 접근 성공

 

 

 

 

8. MyPriRT 라우팅 테이블 살펴보기

 

  • VPC > 라우팅 테이블 > MyPriRT > 라우팅
  • 라우팅 테이블을 살펴보면 S3로 연결할 때는 vpc 엔드포인트 전용 게이트웨이로 가도록 지정
  • NAT를 삭제했었기 때문에 블랙홀이라고 되어 있음
    • 블랙홀 : NAT를 통해 라우팅 하는 것은 사라짐

MyPriRT 라우팅 테이블

 

728x90
반응형

'AWS' 카테고리의 다른 글

AWS RDS 생성 연결  (0) 2024.01.10
AWS EBS 생성 및 연결(EC2에 디스크 추가)  (1) 2024.01.09
AWS 정적 웹사이트 호스팅 & 버전관리  (0) 2024.01.09