ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
    1. 우선 SSH 클라이언트가 비밀키로 공개키를 계산하여 유도해냅니다.
    2. 그리고 서버에서 사용자 경로의 .ssh/authorized_keys에서 공개키를 찾습니다.
    3. 공개키가 있는 것이 확인 되면 서버 → 클라이언트로 특정 메세지(ex. abcd)를 전송합니다.
    4. 그럼 클라이언트는 비밀키로 특정 메세지(abcd)를 해시화(sha256)하고 서명해서 응답하고
    5. 서버는 공개키로 서명을 검증해서 abcd를 sha256한 결과와 동일하면 접속을 허용하는 구조입니다.

     

    이렇게 EC2에 SSH로 접속하는 원리를 알아보았습니다.

Designed by Tistory.