상태 검사를 통과했는데도 Amazon EC2 Linux 인스턴스에 연결할 수 없는 이유는 무엇입니까?
상태 검사를 통과했는데도 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에 연결할 수 없습니다.
해결 방법
참고: 인스턴스 및 데이터는 백업하여 유지하는 것이 좋습니다. 문제를 해결하거나 변경하기 전에 AMI를 생성하거나 EBS 볼륨의 스냅샷을 생성하십시오.
"연결 시간 초과" 오류
"ssh: 호스트에 연결 <hostname> 포트 22: 연결 시간 초과" 오류를 해결하려면 다음 문제를 확인하십시오.
보안 그룹, 라우팅 또는 네트워크 ACL 구성 오류
보안 그룹 인바운드 규칙이 소스 서버의 포트 22를 허용하는지 확인합니다. 아웃바운드 보안 그룹 규칙이 0.0.0.0/0으로의 트래픽을 허용하는지 확인합니다. 보안 그룹 규칙에 대한 자세한 내용은 컴퓨터에서 인스턴스에 연결하는 규칙을 참조하십시오.
온프레미스 클라이언트에서 프라이빗 인스턴스로 연결하려면 로컬 네트워크와 Amazon 가상 프라이빗 클라우드(VPC) 간에 VPN 연결이 있는지 확인하십시오. 또는 동일한 VPC 또는 서브넷 내의 다른 점프 서버에서 인스턴스에 연결하십시오.
연결이 가능한 경우 온프레미스 클라이언트와 AWS Site-to-Site VPN 연결에 문제가 있을 수 있습니다.
엄격한 네트워크 액세스 제어 목록(네트워크 ACL) 설정이 있는 경우 수신 규칙이 포트 22를 허용하는지 확인합니다. 수신 규칙이 0.0.0.0/0으로의 모든 트래픽을 허용하는지 확인합니다.
로컬 방화벽 설정
iptables 또는 firewalld과 같은 OS 수준 방화벽이 있는지 확인합니다. 차단된 연결 문제를 해결하려면 방화벽 구성을 검토하십시오.
SSH와 관련된 OOM 문제
인스턴스에 OOM 문제가 있는지 확인합니다. OOM 오류가 발생하면 운영 체제(OS)가 응답하지 않거나 성능이 심각하게 저하되어 네트워크 요청 시간이 초과됩니다. SSH와 관련된 OOM 문제를 해결하려면 시스템 로그와 리소스 사용량을 확인하십시오.
시스템 로그 확인:
AWS Systems Manager 또는 EC2 직렬 콘솔을 통해 시스템 로그에 액세스합니다(SSH를 사용할 수 없는 경우).
OOM 메시지를 확인하려면 다음 명령을 실행합니다.
dmesg | grep -i oom
Amazon Linux, RHEL 또는 CentOS 시스템 로그를 검토하려면 다음 명령을 실행합니다.
sudo less /var/log/messages
Ubuntu 또는 Debian 시스템 로그를 검토하려면 다음 명령을 실행합니다.
sudo less /var/log/syslog
다음 예와 유사한 출력이 표시됩니다.
Aug 17 10:00:01 ip-172-31-1-1 kernel: [123456.789012] Out of memory: Kill process 1234 (myprocess) score 950 or sacrifice child Aug 17 10:00:01 ip-172-31-1-1 kernel: [123456.789013] Killed process 1234 (myprocess) total-vm:500000kB, anon-rss:200000kB, file-rss:50000kB Aug 17 10:00:01 ip-172-31-1-1 kernel: [123456.789014] oom_reaper: reaped process 1234 (myprocess), now anon-rss:0kB, file-rss:0kB Aug 17 10:00:01 ip-172-31-1-1 kernel: [123456.789015] OOM killer disabled.
리소스 사용량 모니터링:
시스템의 리소스 사용을 모니터링하려면 다음 명령 중에서 선택하십시오.
메모리 사용량을 확인하려면 다음 명령을 실행합니다.
free -m
프로세스를 확인하려면 다음 명령을 실행합니다.
top
그런 다음 메모리 또는 CPU와 같은 시스템 리소스의 대부분을 소비하는 프로세스를 확인합니다.
스왑 사용량을 확인하려면 다음 명령을 실행합니다.
sudo swapon --show
sar 명령으로 과거 리소스 사용량을 확인합니다.
sysstat 패키지가 설치되지 않은 경우 먼저 다음 명령을 실행하여 설치합니다.
sudo yum install sysstat
과거 메모리 사용량을 보려면 다음 명령을 실행합니다.
sar -r
과거 CPU 사용량을 보려면 다음 명령을 실행합니다.
sar -u
메모리를 사용하는 프로세스를 파악하려면 다음 명령을 실행합니다.
ps -eo pmem,pid,user,args | sort -k 1 -r | head -10
CPU를 가장 많이 사용하는 프로세스를 확인하려면 다음 명령을 실행합니다.
ps -eo pid,user,ppid,cmd,%mem,%cpu --sort=-%cpu | head
루트 볼륨 사용량이 100%인지 확인합니다.
df -Th
더 높은 리소스 사용량을 예상했지만 표시되지 않는 경우 인스턴스 유형을 업그레이드하삽시오. 자세한 내용은 System Activity Reporter(SAR)를 사용한 성능 모니터링 또는 모니터링 도구 구성을 참조하십시오.
인스턴스에 대한 직렬 콘솔이 구성되지 않은 경우 EC2 직렬 콘솔 액세스를 참조하여 활성화하십시오.
직렬 콘솔을 사용할 수 없는 경우 복구 인스턴스를 사용하여 시스템 로그를 조사하십시오. 1~8단계를 참조하여 OS 수준 문제를 해결한 다음 /var/log/messages 또는 /varlog/syslog를 확인하십시오.
"연결 거부" 오류
"연결 거부" 오류가 표시되면 직렬 콘솔을 통해 인스턴스에 연결하여 문제를 해결하십시오.
"호스트 키 확인 실패" 오류
"호스트 키 확인 실패" 오류가 표시되면 SSH 클라이언트가 서버 호스트 키와 이전에 저장된 키 간의 불일치를 감지한 것입니다. 이 상황은 서버 재설치로 인해 서버의 호스트 키가 변경되었거나 보안 문제가 있을 때 발생합니다.
이전 호스트 키 제거
확인 오류를 해결하려면 known_hosts 파일에서 오래되었거나 잘못된 호스트 키를 제거하십시오.
파일은 Unix 기반 시스템(Linux, macOS)의 경우 ~/.ssh/known_hosts, Windows의 경우 C:\Users\YourUsername\.ssh\known_hosts에 있습니다.
known_hosts 파일에서 지정된 호스트 이름 또는 IP 주소와 연결된 이전 호스트 키 항목을 삭제하려면 다음 명령을 실행합니다.
ssh-keygen -R your hostname or IP address
참고: YourUsername을 자신의 사용자 이름으로 바꾸십시오. 호스트 이름 또는 IP 주소를 연결하려는 서버의 주소로 바꾸십시오.
서버에 다시 연결
이전 호스트 키를 제거한 후 SSH를 사용하여 서버에 다시 연결합니다. 새 호스트 키 지문을 확인합니다. 새 호스트 키를 수락하여 known_hosts 파일에 추가합니다.
"권한 거부(publickey)" 오류
"권한 거부(publickey)" 오류가 발생하면 SSH 클라이언트는 제공된 자격 증명을 사용하여 서버를 인증할 수 없습니다. 오류를 해결하려면 프라이빗 키와 사용자 이름이 인스턴스에 맞는지 확인하십시오.
일반적인 SSH 문제를 확인하기 위한 Session Manager 자동화
인스턴스에 Session Manager가 구성된 경우 AWSSupport-TroubleshootSSH 자동화 런북을 실행하십시오. 런북은 Linux용 Amazon EC2Rescue 도구를 설치합니다. 그런 다음 런북은 이 도구를 사용하여 SSH를 통한 Linux 시스템 원격 연결을 방해하는 일반적인 문제를 확인하거나 수정합니다.
관련 정보
운영 체제 문제로 인해 인스턴스 상태 확인에 실패한 EC2 Linux 인스턴스의 문제를 해결하려면 어떻게 해야 합니까?
관련 콘텐츠
- 질문됨 10달 전lg...
- 질문됨 일 년 전lg...
- 질문됨 일 년 전lg...
- 질문됨 3달 전lg...
- 질문됨 일 년 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 2달 전
- AWS 공식업데이트됨 일 년 전