기술문서

[기술문서] 공개키 방식 SSH 연결

Lunous 2020. 9. 6. 20:40

공개키 방식 인증이란?

공개키 방식 인증이란, 비유를 하자면
- 공개키 (개인 자물쇠)
- 비밀키 (개인 자물쇠 열쇠)
- 랜덤데이터 (자물쇠로 잠긴 상자 내용물)
를 사용하여 인증하는 방식으로, 다음과 같은 절차를 거치게 된다.

1. 로그인 요청
2. 서버는 공개키로 암호화된 문자열을 전송

 -> '공개키'라는 사용자의 개인자물쇠로 잠긴 상자안에 엄청나게 긴 문자열을 담아서 서버가 사용자에게 보냄
3. SSH Client 프로그램이 비밀키를 사용하여 문자열을 복호화 (비밀키의 passphrase를 이떄 물어봄)

 -> 사용자가 서버에서 사용자의 개인자물쇠로 잠긴 상자를 받아, '비밀키'라는 자신의 개인자물쇠 열쇠로 자물쇠를 열어 내용물을 확인한다. (이떄, 설정에 따라, '비밀키'를 사용하기 위해 passphrase를 입력해야하는 경우도 있다)

4. 복호화된 값을 서버에 전송

 -> 상자안에 있는 긴 문자열을 서버에 전송
5. hash값이 일치하는 경우, 로그인을 승인
 -> 서버는 사용자에게서 받은 긴 문자열이 일치하는 경우, 로그인 승인

만화로 배우는 리눅스 시스템 관리 제2권 pg23

 


실습

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. 위의 절차가 올바르게 이루어졌다면, 다음과 같이 키인증이 이루어 질것입니다.


끝!