현상
웹브라우저에서 AWS 콘솔을 통한 EC2 연결이 되지 않음
SSH Client에서는 연결 잘 됨
Security Group에 ssh all allow로 설정하고 Connect 하니 접속이 되긴 하나, IP가 본인 IP가 아님
원인
브라우저 기반 SSH 연결은 EC2 Instance Connect 서비스를 통해 사용자의 인스턴스를 리다이렉션하여 접속하게 됩니다.
[고객님 PC] ---<TCP/443>---> [AWS Web Console: EC2 Instance Connect] ----<TCP/22>---> [EC2 Instance]
해결방법
위와 같이 AWS를 거쳐서 EC2 인스턴스에 접근하기 때문에 사용하고 계시는 고객님의 PC의 주소가 아닌 EC2 인스턴스가 위치하는 리전의 AWS IP 주소를 해당 EC2 인스턴스의 Security Group에 할당해 주셔야 합니다.
Set up EC2 Instance Connect - Task 1: Configure network access to an instance
(Amazon EC2 콘솔 브라우저 기반 클라이언트) 인스턴스는 서비스용으로 게시된 권장 IP 블록에서 인바운드 SSH 트래픽을 허용하는 것이 좋습니다. service 파라미터에 대한 EC2_INSTANCE_CONNECT 필터를 사용하여 EC2 Instance Connect 하위 집합의 IP 주소 범위를 가져옵니다. 자세한 내용은 Amazon Web Services 일반 참조의 AWS IP 주소 범위 단원을 참조하세요. |
한국 리전에서 사용하는 AWS IP는 다음과 같은 방법으로 확인하실 수 있으며, 확인된 CIDR를 SSH 연결을 위한 Security Group의 Source 항목에 기입해 주시면 됩니다.
$ curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="ap-northeast-2") | select(.service=="EC2_INSTANCE_CONNECT") | .ip_prefix' 13.209.1.56/29
w 명령으로 확인하신 클라이언트의 IP(FROM)가 위 CIDR 에 포함된 IP임을 확인하실 수 있습니다.
참고자료
EC2 Instance Connect를 사용하여 EC2 인스턴스에 연결하는 문제를 해결하려면 어떻게 해야 합니까?
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-instance-connect-troubleshooting/?nc1=h_ls