SSH의 개념
SSH(Secure Shell)은 원격 호스트 컴퓨터에 접근하기 위해 사용하는 인터넷 프로토콜입니다. 1995년 기존의 로컬 셸에 암호화 기능을 추가되어 출시되었습니다. SSH를 사용하면 통신이 노출되어도 암호화된 문자로 보여지게 됩니다.
SSH 키의 종류
SSH 키는 퍼블릭 키(Public Key)와 프라이빗 키(Private Key)로 구성됩니다. 이러한 키들은 어디에 쓸까요? 바로, 서버에 접속할 때 비밀번호 대신 일치 여부를 확인하는 데 사용합니다.
퍼블릭 키는 한글로 하면 공개 키이고 프라이빗 키는 비공개 키입니다. 보통 공개 키는 리모트 컴퓨터에 올려두고, 비공개 키는 로컬 컴퓨터에 보관합니다. 클라이언트가 서버에 SSH 접속을 시도하면 공개 키와 비공개 키의 일치 여부 확인 절차가 진행됩니다.
퍼블릭 키와 프라이빗 키는 쌍으로 존재하며, 이러한 쌍을 키 페어(key pair)라고 합니다. 핵심은 퍼블릭 키는 프라이빗 키에서 쉽게 파생될 수 있는 반면, 프라이빗 키는 퍼블릭 키를 통해 만들기가 무척이나 어렵다는 것입니다. 이론상 불가능한 것은 아니지만 현재 컴퓨터로는 적어도 수백만년이 걸린다고 합니다.
SSH 키 생성
맥 OS는 유닉스 계열 운영체제로 OpenSSH를 기본적으로 포함하고 있습니다. 따라서 터미널에서 ssh-keygen
을 사용하여 간단하게 키를 생성할 수 있습니다.
ssh-keygen
이후 키를 저장할 위치를 설정하고, 추가적으로 비밀번호 사용 여부를 지정할 수 있습니다.
SSH 권한 확인
이제 저장한 경로에서 ls -al
을 통해 생성된 키를 확인할 수 있습니다. id_rsa
는 프라이빗 키며, id_rsa.pub
은 공개키입니다. 개인 키는 사용자만 읽고 쓸 수 있는 600
권한을 갖고 있고, 공개 키는 다른 사용자도 읽고 쓸 수 있는 644
권한을 갖고 있습니다.
SSH 키 사용 방법
퍼블릭 키 인증을 사용하기 위해서는 퍼블릭 키가 반드시 서버에 복사되고, authorized_keys
에 등록되어야 합니다. 이는 다음의 명령어를 통해 진행할 수 있습니다.
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
서버에서 퍼블릭 키 설정이 완료된 경우, 서버는 일치하는 프라이빗 키를 보유한 사용자의 접속만을 허용하게 됩니다. 로그인 과정에서 클라이언트는 디지털 서명을 통해 프라이빗 키의 소유권 여부를 증명합니다.
SSH 관련 더 많은 커맨드들은 SSH 아카데미에서 확인할 수 있습니다.
참고 자료:
'Auth | Security' 카테고리의 다른 글
JWT 토큰 발급과 로그인 처리 방법 (0) | 2022.04.06 |
---|---|
XSS 공격이란? (0) | 2022.03.13 |
SSO 싱글사인온이란? (0) | 2022.03.08 |