공개 키 암호 방식은 암호 방식의 한 종류로 사전에 비밀 키를 나눠가지지 않은 사용자들이 안전하게 통신할 수 있도록 한다.
공개 키 암호 방식에서는 공개 키와 비밀 키가 존재하며, 공개 키는 누구나 알 수 있지만 그에 대응하는 비밀 키는 키의 소유자만이 알 수 있어야 한다.
공개 키는 보안 타협 없이 공개적으로 배포가 가능하다.
공개 키 암호를 구성하는 알고리즘은 대칭 키 암호 방식과 비교하여 비대칭 암호라고 부르기도 한다.
위키백과
공개키-개인키(비밀키)가 한 쌍으로 이루어져 있는 키 쌍이라 합니다.
공개키는 누구나 가질 수 있고, 개인키는 개인이나 중요한 사람만이 가지고 있습니다.
이런 특성을 이용하여 공개키 방식으로 암호화 및 인증에 사용됩니다.
메시지를 공개키로 암호화하면 개인키를 가지고 있는 사람만이 메시지를 복호화하여 메시지를 확인 할 수 있습니다. 개인키를 탈취당하지 않는 이상, 암호화된 메시지가 유출되어도 다른 사람이 절대 읽을 수 없습니다.
SSH는 기본적으로 사전에 설정된 패스워드를 입력하여 접속하지만, 공개키 암호화에 사용되는 키 쌍을 가지고 접속할 수 있는 기능을 제공합니다.
사전에 자신의 공개키를 서버에 나눠주고, SSH 접속 시 개인키를 이용하여 사용자를 증명하는 원리로 로그인하게 됩니다.
아래는 ssh 접속 과정을 나타낸 시퀀스 다이어그램 입니다.
3.1 및 3.2는 공개키를 이용한 SSH 접속 방법을 설명하기 앞서 기본적으로 알아야할 사전지식입니다.
클라이언트 키 쌍
~/.ssh/known_hosts 파일
서버 키 쌍
~/.ssh/authorized_keys 파일
리눅스계열에서는 공개키를 복사하는 명령어 ssh-copy-id 를 사용
윈도우에서는 ssh와 cat을 이용한 명령어 조합을 이용
공개키 방식으로 SSH 접속 시 -i 옵션 생략 시, 아래 경로에 있는 개인키로 접속을 시도
만약 개인키의 위치가 다르거나 AWS의 pem 파일인 경우 -i 옵션 이용
개인키를 windows <-> linux간 FTP로 복사하다가 발생하는 권한 문제입니다.
ssh에 사용되는 각 종 파일들 (설정파일,공개키,개인키 등)은 보안적인 이슈로 인해 아래 사진과 같이 권한이 정해져있습니다.
위 사진을 보면 Mandatory Permission 이라고 정해진 권한이 있는데, 개인키 파일과 설정파일은 꼭 600으로 설정이 되어있어야 한다는 뜻입니다. (600은 소유자만 읽고 쓸 수 있는 권한)
만약 600이 아니라면 chmod 명령어를 통해 권한을 수정하면 됩니다.
만약 윈도우에서 발생했다면 해당 파일에 대한 상속 권한을 비활성화 시키고, 현재 윈도우 계정만 개인키 파일에 접근할 수 있도록 설정을 변경해줍니다.
자세한 방법은 윈도우10 SSH 접속시 PEM 파일 퍼미션 에러 해결방법 글을 참고하시면 됩니다.
[참고]
1. https://serverfault.com/questions/935666/ssh-authentication-sequence-and-key-files-explain
2. https://superuser.com/questions/215504/permissions-on-private-key-in-ssh-folder
감사합니다!.