-
EC2로 SSH 접속이 되는 원리클라우드 2025. 6. 30. 23:15
지금까지는 그냥 EC2로 SSH 접속만 했었는데, 인프런 강의에서 그 원리에 대해서 조금 더 자세히 알게 되었습니다.
우선 EC2는 RSA 공개키 암호화 방식을 사용하여 접속합니다.
공개키 암호화 방식은 암호화/복호화와 서명 검증에서 사용되는데 공개키와 개인키가 있습니다.
공개키로 암호화 한 것을 개인키로 복호화 하여 비밀을 전달하고, 개인키로 서명한 것을 공개키로 검증할 때 사용됩니다.
SSH 접속은 서명 검증으로 이루어집니다.
학교에서 배웠던 내용으로 RSA 방식은 3746517(소수라 가정) * 1239513(소수라 가정)는 계산할 수 있지만
두 곱셈의 결과인 4643856526221 은 어떤 두 소수의 곱셈으로 이루어졌는지 알아내기 어렵다는 것에서 나온 알고리즘입니다.
RSA 2048 알고리즘을 예를 들면 두 소수는 1024 비트의 크기이고 이는 십진수로 약 308자리 정도 된다고 합니다. 7X7 의 두 소수를 구하는 것도 어려운데 308 X 308 은 정말 알아내기 어렵겠죠?
물론 한 소수를 알게 된다면 4643856526221 / 1239513 = 3746517 다음과 같이 쉽게 알아내긴 하겠지만요.
소인수분해가 어렵다는 것만으로는 보안상 안전하다는 근거가 될 수 없어 “오일러정리” 라는 것을 활용해서 더 안전하게 공개키 알고리즘을 만들었다고 합니다.
뭐 어쨌든 이걸 어떻게 사용하는가? 하면
우리는 EC2를 만들 때 키 페어를 생성합니다.
여기서 만드는 키는 개인키이고 생성하면 다운로드 됩니다.
그리고 EC2를 생성하게 되면 AMI에 따라 사용자가 결정되는데 그 아래에 .ssh/authorized_keys 경로에 공개키가 저장됩니다.
예를들면 ubuntu일 때는 /home/ubuntu/.ssh/authorized_keys 에 Amazon Linux일 경우는 /home/ec2-user/.ssh/authorized_keys 이렇게 말이죠
이제 다음 명령어를 통해서 비밀키를 가지고 EC2에 접근할 때 어떤 일이 벌어지냐면
ssh -i ~/Downloads/jason-key.pem ubuntu@3.36.106.29
- 우선 SSH 클라이언트가 비밀키로 공개키를 계산하여 유도해냅니다.
- 그리고 서버에서 사용자 경로의 .ssh/authorized_keys에서 공개키를 찾습니다.
- 공개키가 있는 것이 확인 되면 서버 → 클라이언트로 특정 메세지(ex. abcd)를 전송합니다.
- 그럼 클라이언트는 비밀키로 특정 메세지(abcd)를 해시화(sha256)하고 서명해서 응답하고
- 서버는 공개키로 서명을 검증해서 abcd를 sha256한 결과와 동일하면 접속을 허용하는 구조입니다.
이렇게 EC2에 SSH로 접속하는 원리를 알아보았습니다.
'클라우드' 카테고리의 다른 글
Redis 클러스터 구성 (1) 2025.07.28 Github Actions Self-hosted-runner 사용 방법 (5) 2025.07.12 CloudFront + S3 + ACM + Route53으로 프론트(Vite + React) 정적 파일 배포 하기 (1) 2025.06.14 Infisical CLI 설치하는 파이프라인 최적화 (1) 2025.06.07 신한 DS ICT 인프라 실기시험 실습 (2) 2025.06.07