[AWS] 에러해결(Connection timed out)- 인스턴스 연결성 검사 실패 ,메모리 부족

Yu Seong Kim·2024년 9월 23일
0

항상 접속하던 ssh 접속을 하였으나 다음과 같은 에러가 떴습니다.

ssh: connect to host ~~~ port 22: Connection timed out

원인

Connection timed out의 원인은 ssh 클라이언트측에서 발생하며, 서버가 클라이언트에 응답하지 않고 클라이언트 프로그램이 시간을 초과한 것 입니다.

보안 그룹 또는 네트워크 ACL이 액세스를 허용하지 않습니다.
인스턴스의 운영 체제에 방화벽이 있습니다.
클라이언트와 서버 사이에 방화벽이 있습니다.
호스트가 존재하지 않습니다.

AWS 확인 및 해결

이 문제를 해결하기 위하여 한 단계씩 검토하는 중 문제를 발견하였습니다.

  • 인스턴스 IP 또는 호스트 확인.
  • 보안그룹 확인 (TCP 포트 22 수신 허용)
  • 인스턴스 상태 확인 --> 인스턴스 연결성 검사 실패

인스턴스의 상태검사에 '1/2개 검사통과'라는 문구가 있었습니다.

상태 검사

상태 및 경보 메뉴를 눌러서 봤더니 연결성 검사 실패라는 것을 확인했습니다.

연결성 검사
특정 리소스가 인터넷이나 다른 네트워크 리소스와의 연결을 유지하고 있는지 확인하는 프로세스입니다. 이 검사는 주로 로드 밸런서, 인스턴스, 데이터베이스 등의 서비스가 정상적으로 작동하고 있는지 확인하는 데 사용됩니다.

시스템 로그 가져오기

구글링을 해보니 '시스템 로그 가져오기' 페이지에서 에러 원인을 파악하는 것을 알았습니다.


시스템 로그 가져오기 페이지 하단을 보면 '부팅 또는 네트워킹 문제의 경우 EC2 직렬 콘솔을 사용하여 문제를 해결합니다. [연결]버튼을 선택하여 세션을 시작합니다.' 문구와 함께 있는 연결버튼을 눌렀습니다.

직렬 콘솔 권한 부여

직렬 콘솔이란?
직렬 콘솔(EC2 Serial Console)은 인스턴스가 네트워크에 연결되지 않거나 SSH를 통해 접근할 수 없을 때, 인스턴스 내부로 접근하여 문제를 해결할 수 있는 콘솔입니다. 이 기능은 인스턴스의 부팅 문제, 네트워크 설정 문제, 또는 방화벽 설정으로 인해 접근이 불가능할 때 유용합니다.
주로 ttyS0와 같은 직렬 포트를 통해 인스턴스 내부에 직접 접근하여 명령어를 입력하고 문제를 해결할 수 있습니다.

권한 부족 문제

이미지의 메시지는 직렬 콘솔을 사용하기 위한 권한이 현재 계정에 없다는 의미입니다. 즉, 직렬 콘솔을 통해 인스턴스에 접근하려면 AWS IAM 에서 특정 권한을 부여받아야 합니다.

<필요한 권한>

  • EC2 인스턴스에 대한 직렬 콘솔 접근 권한: ec2-instance-connect:SendSerialConsoleSSHPublicKey 권한을 가진 IAM 정책이 필요합니다.
  • EC2 인스턴스에 대한 관리자 권한: AmazonEC2FullAccess 또는 AdministratorAccess와 같은 더 포괄적인 권한이 필요할 수 있습니다.
    해결 방법

저는 권한을 부여하기위해 'Manage access' 버튼을 눌렀습니다.

그 다음 '허용'에 체크했습니다.

상태 검사 업데이트

상태 검사의 '인스턴스 연결성 검사 통과'으로 변경되었습니다.

그렇다면 ssh로 접속도 확인해봤습니다.

이렇게 ssh로 서버에 접속이 가능해졌습니다.

해결과정 요약

  1. 연결성 검사 실패: 초기 상태에서 EC2 인스턴스의 연결성 검사에 실패했습니다. 이는 인스턴스가 외부 네트워크와 올바르게 통신하지 못하고 있음을 의미합니다.

  2. 시스템 로그와 연결 버튼: 시스템 로그를 확인하고 인스턴스에 문제가 있음을 감지한 뒤, EC2 직렬 콘솔을 사용하여 직접 문제를 해결하려고 했습니다.

  3. Manage Access 버튼 사용: EC2 직렬 콘솔에 접근하기 위한 권한이 부족하여 'Manage Access' 버튼을 통해 권한 설정 페이지로 이동했습니다.

  4. EC2 직렬 콘솔 허용 설정: EC2 직렬 콘솔 액세스를 허용하는 옵션을 활성화하고, '업데이트' 버튼을 눌러 권한을 부여했습니다.

  5. 상태 검사 통과: 권한 설정 이후, 다시 상태를 확인했을 때 연결성 검사와 시스템 상태 검사가 모두 통과되었습니다.

다음과 같은 순서로 해결을 진행했습니다.

직렬 콘솔 액세스 활성화: EC2 직렬 콘솔 액세스를 허용함으로써, 인스턴스의 네트워크 구성이나 기타 문제를 해결할 수 있는 접근 권한이 활성화되었습니다.

그렇다면 왜? 이 오류가 발생했나

구글링을 해보니 Connection timed out는 매우 다양한 이유로 발생하는 오류입니다. 며칠 전까지 접속이 잘 되었는데 갑자기 접속이 되지 않은 이유가 궁금했습니다. 며칠 전에 기존 aws AccessKey를 비활성화하고, 새로 재발급을 하였습니다. 재발급을 한 뒤 설정에 반영하지 않아 이전에 사용하던 비활성화된 키로 인증을 시도하였고, 그 과정에서 API 호출이 인증되지 않으므로 해당 리소스에 접근하지 못하게 되어서 'Connection timed out'이 발생한 것 같습니다. 물론 다른 이유일 가능성도 높기 때문에 확실한 이유를 더 찾아보고, 공부를 해야겠습니다.

<참고>
awsReport - How do I troubleshoot "Connection refused" or "Connection timed out" errors when I use SSH to connect to my EC2 instance with SSH?

[EC2] EC2 인스턴스 SSH 접속 연결 오류 해결하기

[AWS] ufw enable 후 ssh: connect to host {IP 주소} port 22: Connection timed out 해결 방법

profile
인생을 코딩하는 남자.

0개의 댓글