[기술문서] 공개키 방식 SSH 연결
공개키 방식 인증이란?
공개키 방식 인증이란, 비유를 하자면
- 공개키 (개인 자물쇠)
- 비밀키 (개인 자물쇠 열쇠)
- 랜덤데이터 (자물쇠로 잠긴 상자 내용물)
를 사용하여 인증하는 방식으로, 다음과 같은 절차를 거치게 된다.
1. 로그인 요청
2. 서버는 공개키로 암호화된 문자열을 전송
-> '공개키'라는 사용자의 개인자물쇠로 잠긴 상자안에 엄청나게 긴 문자열을 담아서 서버가 사용자에게 보냄
3. SSH Client 프로그램이 비밀키를 사용하여 문자열을 복호화 (비밀키의 passphrase를 이떄 물어봄)
-> 사용자가 서버에서 사용자의 개인자물쇠로 잠긴 상자를 받아, '비밀키'라는 자신의 개인자물쇠 열쇠로 자물쇠를 열어 내용물을 확인한다. (이떄, 설정에 따라, '비밀키'를 사용하기 위해 passphrase를 입력해야하는 경우도 있다)
4. 복호화된 값을 서버에 전송
-> 상자안에 있는 긴 문자열을 서버에 전송
5. hash값이 일치하는 경우, 로그인을 승인
-> 서버는 사용자에게서 받은 긴 문자열이 일치하는 경우, 로그인 승인
실습
1. 오픈 키 인증방식을 사용하고 싶은 서버에 ssh를 하고, 'ssh-keygen' 명령어를 실행합니다.
2. ssh-keygen 명령어를 실행시,
> /home/[사용자명]/.ssh 에 공개키(id_rsa.pub), 비밀키(id_rsa)가 저장됩니다.
> /home/[사용자명]/.ssh 디렉토리가 존재하지 않을 시, 새롭게 생성됩니다.
> 'Enter passphrase'는 비밀키를 사용하기 위하여 입력하는 비밀번호를 입력하는 것입니다.
3. /home/[사용자명]/.ssh 디렉토리에서, id_rsa.pub(공개키), id_rsa(비밀키)를 확인할 수 있습니다.
(*현재는 설명을 위하여 cat명령어를 이용하여 출력하였지만, 실제 현장에서는 id_rsa(비밀키)는 유출되면 안됩니다. )
4. /home/[사용자명]/.ssh/authorized_keys를 편집하고, 위의 id_rsa.pub의 내용을 그대로 복사해 줍니다. \
(없을경우 새롭게 생성합니다.)
5. 이후, 'PuTTY Key Generator'를 실행합니다. (보통 'PuTTYgen'이라고 치면 나옵니다.)
6. 3번절차에서 확인했던 id_rsa파일을 puttygen이 실행되고 있는 컴퓨터로 복사합니다.
(혹은, cat명령어로 실행한 id_rsa파일 내용물은 그대로 복사하여, 메모장으로 id_rsa를 작성할수도 있습니다.
하지만, 복사하는 과정에서의 사용자 실수나, 보안상의 이유로 그다지 권장드리는 방법은 아닙니다.)
Case 01 : 비밀키의 형식이, 위의 사진과 한문자라도 일치하지 않는 경우, 발생하는 에러입니다.
(제일 자주 일어나는 에러이며, 보통 복사하는 과정에서 스페이스나, 엔터키 한번을 더 눌러서 발생하곤 합니다.)
7. id_rsa의 형식이 올바른 경우, 다음과 같이 인증키에 관한 각종 정보들을 확인할수 있습니다.
(공개키, fingerprint 등등...)
(비밀키의 Passphrase가 걸려있는경우, Passphrase를 확인하는 창이 나옵니다.)
Case 2 : 비밀키가 아닌 공개키를 입력할 때 발생하는 에러입니다.
8. 'Save private key'를 누르면, 다음창과 함께 .ppk 파일로 저장하는 화면이 나옵니다.
9. 이후, Putty로 접속할때, ""Connection -> SSH -> Auth""에 가보시면, 'Authentication parameters'에
개인키를 사용하는 부분에서, 아까 생성한 .ppk파일을 선택해 줍니다.
10. 위의 절차가 올바르게 이루어졌다면, 다음과 같이 키인증이 이루어 질것입니다.
끝!