on my way

AWS EC2 연결 과정에서 발생한 에러 해결기 (Windows 환경, PPK키 PEM으로 변환, key으로 ping 에러 해결) 본문

experiences/DevLog

AWS EC2 연결 과정에서 발생한 에러 해결기 (Windows 환경, PPK키 PEM으로 변환, key으로 ping 에러 해결)

wingbeat 2024. 9. 6. 15:14
반응형

AWS EC2를 사용하여 서버를 관리할 때, SSH를 통해 EC2 인스턴스에 접속해야 하는 경우가 많았다.

그러나 연결 과정에서 다양한 에러가 발생했었다.

 

이번 포스팅에서는 WindowsUbuntu 환경에서 AWS EC2 연결을 시도하는 과정에서 겪었던 에러와 그 해결 방법을 공유하고자 한다.

1. EC2 인스턴스 설정과 기본 SSH 연결

EC2 인스턴스 생성

AWS 콘솔을 통해 EC2 인스턴스를 생성한 후, PEM 키 파일을 다운로드했었다.

이 키 파일은 SSH를 통해 인스턴스에 접속할 때 필수적이다.

 

EC2 인스턴스를 생성할 때 다음과 같은 설정이 중요했다:

  • 보안 그룹: 기본적으로 SSH 포트(22번), HTTP(80번), HTTPS(443번)를 열어두었다.
  • 키 페어(Key Pair): 인스턴스 접속을 위한 PEM 키 파일을 다운로드했었다.

보안 그룹 설정

  1. AWS 콘솔에서 EC2를 선택하고, "보안 그룹(Security Group)" 탭에서 "인바운드 규칙"을 편집했다.
  2. SSH(포트 22), HTTP(포트 80), HTTPS(포트 443)를 열어주었다. SSH의 경우 접속 IP를 제한할 수도 있었다.

2. PEM 키 파일 권한 문제

Windows 또는 Ubuntu에서 PEM 키 파일을 사용하여 SSH 연결을 시도할 때, 가장 흔히 발생한 에러 중 하나는 권한 설정 문제였다.

에러 메시지

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'chukahaeyo.pem' are too open.
This private key will be ignored.
Load key "chukahaeyo.pem": bad permissions
Permission denied (publickey).

원인

이 에러는 PEM 파일의 권한이 너무 넓게 설정되어 있을 때 발생했다.

보안상의 이유로, PEM 파일은 소유자만 읽을 수 있어야 하며, 그룹이나 다른 사용자에게 접근 권한이 없어야 한다.

해결 방법

  1. 권한 설정 변경:이 명령어는 PEM 파일에 읽기 권한만 부여하고, 나머지 권한을 제거해주었다.
  2. chmod 400 chukahaeyo.pem
  3. SSH 연결 시도:
  4. ssh -i chukahaeyo.pem ec2-user@<EC2-퍼블릭-IP>

이 과정으로 권한 문제를 해결하고 EC2 인스턴스에 정상적으로 접속할 수 있었다.


3. Windows에서 PPK 파일을 PEM 파일로 변환하기

Windows에서 PuTTY를 사용해 생성된 PPK 파일은 리눅스 환경에서 바로 사용할 수 없기 때문에, 이를 PEM 파일로 변환해야 했다.

PPK 파일을 PEM 파일로 변환하기

  1. PuttyGen을 실행했다.
  2. Load 버튼을 클릭해 PPK 파일을 불러왔다.
  3. Conversions 메뉴에서 Export OpenSSH key를 선택하여 PEM 파일로 저장했다.

이렇게 변환한 PEM 파일을 리눅스 환경에서 사용할 수 있었다.


4. Ubuntu에서 PEM 파일을 사용하여 EC2 연결하기

Windows에서 Ubuntu를 설치한 후, SSH로 EC2 인스턴스에 연결하는 과정에서 발생한 문제들을 해결했다.

단계 1: Ubuntu 설치

  1. Microsoft Store에서 Ubuntu를 검색하여 설치했다.
  2. Ubuntu 터미널을 실행하여 기본 설정을 완료했다.

단계 2: PEM 파일을 Ubuntu로 옮기기

  1. Windows 파일 시스템에서 Ubuntu로 PEM 파일을 이동했다.
    • Ubuntu의 홈 디렉토리 아래에 .ssh 폴더를 생성하여 PEM 파일을 이동했다.
    • mkdir -p ~/.ssh mv /mnt/c/Users/YourWindowsUsername/Downloads/chukahaeyo.pem ~/.ssh/
  2. PEM 파일 권한 수정:
  3. chmod 400 ~/.ssh/chukahaeyo.pem

단계 3: EC2 인스턴스에 SSH 연결

PEM 파일 권한을 올바르게 설정한 후, EC2 인스턴스에 접속할 수 있었다:

ssh -i ~/.ssh/chukahaeyo.pem ec2-user@<EC2-퍼블릭-IP>

5. 네트워크 연결 문제 해결

EC2 연결 중 "Temporary failure in name resolution" 오류가 발생했었다. 

해결 방법

  1. 네트워크 상태 확인:
  2. ping google.com
  3. DNS 설정 수정:
    /etc/resolv.conf 파일을 편집하여 DNS 설정을 확인하거나 변경할 수 있었다.

DNS 설정 오류 해결 방법 - Ubuntu에서 인터넷 연결 문제 해결기

Ubuntu에서 EC2에 연결을 시도하는 과정 중 발생할 수 있는 대표적인 문제 중 하나는 DNS 설정 오류로 인한 인터넷 연결 문제다.

이 문제는 서버가 도메인 이름을 IP 주소로 변환하지 못해 발생하며, ping google.com 명령어를 실행했을 때 다음과 같은 오류가 표시된다.

ping: google.com: Temporary failure in name resolution

 


문제 원인

이 오류는 기본 DNS 서버가 잘못된 IP 주소를 가리키고 있을 때 발생한다.

DNS 서버가 제대로 설정되어 있지 않으면 서버는 도메인 이름을 IP 주소로 변환할 수 없게 되어, 인터넷 접속이 불가능해진다.

해결 방법은 잘못된 DNS 서버를 수정하여, 올바른 DNS 서버로 설정하는 것이다.

우리는 이를 위해 /etc/resolv.conf 파일의 DNS 서버 주소를 수정할 것이다.


해결 방법: DNS 서버 설정 수정

1. 기본 DNS 설정 파일 확인

먼저, /etc/resolv.conf 파일을 확인한다.

해당 파일은 시스템의 DNS 설정을 포함하고 있으며, 이 파일이 잘못 설정되어 있을 가능성이 있다.

cat /etc/resolv.conf

파일에 기록된 DNS 서버 주소를 확인한 후, 잘못된 DNS 서버가 설정되어 있다면 수정이 필요하다.


2. 기존의 DNS 설정 파일 삭제 및 새로 생성

  1. 기존 resolv.conf 파일 삭제:
    먼저 기존의 잘못된 설정을 삭제한다.
  2. sudo rm /etc/resolv.conf
  3. 새로운 resolv.conf 파일 생성:
    새로운 설정 파일을 생성한다.
  4. sudo touch /etc/resolv.conf

3. DNS 서버 주소 설정

다음으로, 새로 생성한 /etc/resolv.conf 파일에 공용 DNS 서버 주소를 추가한다.

  1. resolv.conf 파일 편집:
  2. sudo nano /etc/resolv.conf
  3. 파일에 아래 내용을 추가한다. 이 예시에서는 Cloudflare DNS 서버(1.1.1.1)를 사용한다. 구글 DNS 서버(8.8.8.8)와 같은 다른 공용 DNS 서버도 사용할 수 있다.
  4. nameserver 1.1.1.1
  5. 저장 후 종료:
  6. 편집이 완료되면 Ctrl + S를 눌러 파일을 저장한 후, Ctrl + X를 눌러 나간다.

4. DNS 설정 재시작

이제 수정된 DNS 설정을 적용하기 위해, systemd-resolved 서비스를 재시작한다.

sudo systemctl restart systemd-resolved.service

5. 시스템 재부팅 (필요한 경우)

DNS 설정이 즉시 반영되지 않을 경우, 시스템을 재부팅한 후 다시 시도할 수 있다.

sudo reboot

문제 해결 확인

이제 인터넷 연결이 정상적으로 작동하는지 확인하기 위해, 다시 한 번 ping 명령어를 사용하여 확인한다.

ping google.com

이제 구글에 정상적으로 핑이 가는 것을 확인할 수 있을 것이다.

이 과정을 통해 DNS 설정 문제를 해결하고 인터넷 연결을 복구할 수 있었다.


DNS 서버가 잘못 설정되면 서버는 인터넷 연결에 실패하게 되며, 이 문제를 해결하기 위해 resolv.conf 파일 수정DNS 서버 설정을 재설정해야 한다.

요약

  1. resolv.conf 파일 삭제 및 새로 생성
  2. DNS 서버 주소 설정 (1.1.1.1 또는 8.8.8.8)
  3. systemd-resolved 서비스 재시작
  4. 시스템 재부팅 (필요 시)

이 과정을 통해 인터넷 연결 문제를 해결할 수 있었다.

 


6. 결론

AWS EC2 인스턴스에 SSH로 접속하는 과정에서 발생한 주요 에러와 그 해결 방법을 정리했다.

특히 Windows와 Ubuntu 환경에서 PEM/PPK 파일 관련 문제를 해결하고, SSH를 통해 EC2 인스턴스에 성공적으로 접속할 수 있었다.

EC2 설정 중 다양한 에러가 발생할 수 있지만, 기본적인 보안 설정과 파일 권한 문제를 해결하면 대부분의 문제를 극복할 수 있었다.

참고 링크


이와 같은 방식으로 문제를 해결하며 AWS EC2 설정을 마칠 수 있었다.

반응형