
🔐 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세부 단계:
- 클라이언트의 공개 키 제출: 클라이언트는 자신의 공개 키를 서버에 제출합니다.
- 서버의 공개 키 검증: 서버는 클라이언트가 제출한 공개 키가
~/.ssh/authorized_keys파일에 있는지 확인합니다. - 챌린지 생성 및 전송: 서버는 무작위 문자열(챌린지)을 생성하여 클라이언트에게 전송합니다.
- 클라이언트의 챌린지 암호화: 클라이언트는 자신의 개인 키를 사용하여 챌린지를 암호화한 후 서버로 보냅니다.
- 서버의 챌린지 검증: 서버는 등록된 공개 키를 사용하여 암호화된 챌린지를 복호화합니다. 복호화된 값이 서버가 생성한 원래 챌린지와 일치하면 인증에 성공합니다.
- 로그인 허가: 서버는 클라이언트의 인증이 성공했음을 확인하고 SSH 세션을 시작합니다.
🔍 요약
- 클라이언트는 자신의 공개 키를 서버에 제출합니다.
- 서버는 제출된 공개 키가
~/.ssh/authorized_keys파일에 있는지 확인합니다. - 공개 키가 등록되어 있으면 서버는 클라이언트에게 챌린지를 전송합니다.
- 클라이언트는 자신의 개인 키로 챌린지를 암호화하여 서버로 보냅니다.
- 서버는 암호화된 챌린지를 복호화하여 원래의 챌린지와 일치하는지 확인합니다.
- 인증이 성공하면 클라이언트는 서버에 로그인할 수 있습니다.
이 과정을 통해 서버는 클라이언트가 올바른 개인 키를 소유하고 있음을 확인하며, 이는 비밀번호 없이도 안전하게 SSH 연결을 가능하게 합니다.
© 2024 lifesoon.tistory.com 원문 보기: SSH 공개 키 인증: 암호 없이 안전한 로그인 방법