본문 바로가기
카테고리 없음

SSH 공개 키 인증: 암호 없이 안전한 로그인 방법

by IT트레이서 2024. 6. 19.

🔐 SSH 공개 키 인증: 암호 없이 안전한 로그인 방법

리눅스 서버에서 ~/.ssh/authorized_keys 파일에 다른 서버의 공개 키를 등록하면, 비밀번호 없이 로그인할 수 있습니다. 이 원리에 대해 자세히 알아보겠습니다.

출처:https://lifesoon.tistory.com/52

🗝️ 키 쌍 생성

먼저 클라이언트에서 SSH 키 쌍(공개 키와 개인 키)을 생성합니다:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

이 명령어는 id_rsa (개인 키)와 id_rsa.pub (공개 키)를 생성합니다.

📄 공개 키 등록

생성된 공개 키(id_rsa.pub 파일의 내용)를 서버의 ~/.ssh/authorized_keys 파일에 추가합니다. 이를 쉽게 하기 위해 다음 명령어를 사용할 수 있습니다:

ssh-copy-id user@server_address

이 명령어는 클라이언트의 공개 키를 서버의 ~/.ssh/authorized_keys 파일에 추가합니다.

🚀 SSH 로그인 과정

이제 클라이언트에서 서버로 SSH 접속을 시도합니다:

ssh user@server_address
세부 단계:
  1. 클라이언트의 공개 키 제출: 클라이언트는 자신의 공개 키를 서버에 제출합니다.
  2. 서버의 공개 키 검증: 서버는 클라이언트가 제출한 공개 키가 ~/.ssh/authorized_keys 파일에 있는지 확인합니다.
  3. 챌린지 생성 및 전송: 서버는 무작위 문자열(챌린지)을 생성하여 클라이언트에게 전송합니다.
  4. 클라이언트의 챌린지 암호화: 클라이언트는 자신의 개인 키를 사용하여 챌린지를 암호화한 후 서버로 보냅니다.
  5. 서버의 챌린지 검증: 서버는 등록된 공개 키를 사용하여 암호화된 챌린지를 복호화합니다. 복호화된 값이 서버가 생성한 원래 챌린지와 일치하면 인증에 성공합니다.
  6. 로그인 허가: 서버는 클라이언트의 인증이 성공했음을 확인하고 SSH 세션을 시작합니다.

🔍 요약

  • 클라이언트는 자신의 공개 키를 서버에 제출합니다.
  • 서버는 제출된 공개 키가 ~/.ssh/authorized_keys 파일에 있는지 확인합니다.
  • 공개 키가 등록되어 있으면 서버는 클라이언트에게 챌린지를 전송합니다.
  • 클라이언트는 자신의 개인 키로 챌린지를 암호화하여 서버로 보냅니다.
  • 서버는 암호화된 챌린지를 복호화하여 원래의 챌린지와 일치하는지 확인합니다.
  • 인증이 성공하면 클라이언트는 서버에 로그인할 수 있습니다.

이 과정을 통해 서버는 클라이언트가 올바른 개인 키를 소유하고 있음을 확인하며, 이는 비밀번호 없이도 안전하게 SSH 연결을 가능하게 합니다.

© 2024 lifesoon.tistory.com 원문 보기: SSH 공개 키 인증: 암호 없이 안전한 로그인 방법

출처: https://lifesoon.tistory.com/52