항상 접속하던 ssh 접속을 하였으나 다음과 같은 에러가 떴습니다.
ssh: connect to host ~~~ port 22: Connection timed out
Connection timed out의 원인은 ssh 클라이언트측에서 발생하며, 서버가 클라이언트에 응답하지 않고 클라이언트 프로그램이 시간을 초과한 것 입니다.
보안 그룹 또는 네트워크 ACL이 액세스를 허용하지 않습니다.
인스턴스의 운영 체제에 방화벽이 있습니다.
클라이언트와 서버 사이에 방화벽이 있습니다.
호스트가 존재하지 않습니다.
이 문제를 해결하기 위하여 한 단계씩 검토하는 중 문제를 발견하였습니다.
인스턴스의 상태검사에 '1/2개 검사통과'라는 문구가 있었습니다.
상태 및 경보 메뉴를 눌러서 봤더니 연결성 검사 실패라는 것을 확인했습니다.
연결성 검사
특정 리소스가 인터넷이나 다른 네트워크 리소스와의 연결을 유지하고 있는지 확인하는 프로세스입니다. 이 검사는 주로 로드 밸런서, 인스턴스, 데이터베이스 등의 서비스가 정상적으로 작동하고 있는지 확인하는 데 사용됩니다.
구글링을 해보니 '시스템 로그 가져오기' 페이지에서 에러 원인을 파악하는 것을 알았습니다.
시스템 로그 가져오기 페이지 하단을 보면 '부팅 또는 네트워킹 문제의 경우 EC2 직렬 콘솔을 사용하여 문제를 해결합니다. [연결]버튼을 선택하여 세션을 시작합니다.' 문구와 함께 있는 연결버튼을 눌렀습니다.
직렬 콘솔이란?
직렬 콘솔(EC2 Serial Console)은 인스턴스가 네트워크에 연결되지 않거나 SSH를 통해 접근할 수 없을 때, 인스턴스 내부로 접근하여 문제를 해결할 수 있는 콘솔입니다. 이 기능은 인스턴스의 부팅 문제, 네트워크 설정 문제, 또는 방화벽 설정으로 인해 접근이 불가능할 때 유용합니다.
주로 ttyS0와 같은 직렬 포트를 통해 인스턴스 내부에 직접 접근하여 명령어를 입력하고 문제를 해결할 수 있습니다.
이미지의 메시지는 직렬 콘솔을 사용하기 위한 권한이 현재 계정에 없다는 의미입니다. 즉, 직렬 콘솔을 통해 인스턴스에 접근하려면 AWS IAM 에서 특정 권한을 부여받아야 합니다.
<필요한 권한>
저는 권한을 부여하기위해 'Manage access' 버튼을 눌렀습니다.
그 다음 '허용'에 체크했습니다.
상태 검사의 '인스턴스 연결성 검사 통과'으로 변경되었습니다.
그렇다면 ssh로 접속도 확인해봤습니다.
이렇게 ssh로 서버에 접속이 가능해졌습니다.
연결성 검사 실패: 초기 상태에서 EC2 인스턴스의 연결성 검사에 실패했습니다. 이는 인스턴스가 외부 네트워크와 올바르게 통신하지 못하고 있음을 의미합니다.
시스템 로그와 연결 버튼: 시스템 로그를 확인하고 인스턴스에 문제가 있음을 감지한 뒤, EC2 직렬 콘솔을 사용하여 직접 문제를 해결하려고 했습니다.
Manage Access 버튼 사용: EC2 직렬 콘솔에 접근하기 위한 권한이 부족하여 'Manage Access' 버튼을 통해 권한 설정 페이지로 이동했습니다.
EC2 직렬 콘솔 허용 설정: EC2 직렬 콘솔 액세스를 허용하는 옵션을 활성화하고, '업데이트' 버튼을 눌러 권한을 부여했습니다.
상태 검사 통과: 권한 설정 이후, 다시 상태를 확인했을 때 연결성 검사와 시스템 상태 검사가 모두 통과되었습니다.
다음과 같은 순서로 해결을 진행했습니다.
직렬 콘솔 액세스 활성화: EC2 직렬 콘솔 액세스를 허용함으로써, 인스턴스의 네트워크 구성이나 기타 문제를 해결할 수 있는 접근 권한이 활성화되었습니다.
구글링을 해보니 Connection timed out는 매우 다양한 이유로 발생하는 오류입니다. 며칠 전까지 접속이 잘 되었는데 갑자기 접속이 되지 않은 이유가 궁금했습니다. 며칠 전에 기존 aws AccessKey를 비활성화하고, 새로 재발급을 하였습니다. 재발급을 한 뒤 설정에 반영하지 않아 이전에 사용하던 비활성화된 키로 인증을 시도하였고, 그 과정에서 API 호출이 인증되지 않으므로 해당 리소스에 접근하지 못하게 되어서 'Connection timed out'이 발생한 것 같습니다. 물론 다른 이유일 가능성도 높기 때문에 확실한 이유를 더 찾아보고, 공부를 해야겠습니다.
[EC2] EC2 인스턴스 SSH 접속 연결 오류 해결하기
[AWS] ufw enable 후 ssh: connect to host {IP 주소} port 22: Connection timed out 해결 방법