UroA 개발 블로그

[AWS] SSH Key 만들기 본문

Programming/AWS

[AWS] SSH Key 만들기

UroA 2016. 9. 27. 17:23

SSH key 만들기

SSH Key란?

서버에 접속 할 때 비밀번호 대신 key를 제출하는 방식이다.
SSH Key는 (1) 비밀번호 보다 높은 수준의 보안을 필요로 할 때, (2) 로그인 없이 자동으로 서버에 접속 할 때 사용한다.

SSH Key가 동작하는 방식

SSH Key는 공개키(public key)와 비공개 키(private key)로 이루어진다. 이 두개의 관계를 이해하는 것이 SSH Key를 이해하는데 핵심이다. 키를 생성하면 공개키와 비공개키가 만들어진다. 이 중에 비공개키는 로컬 머신(SSH Client)에 위치하고, 공개키는 리모트 머신(SSH Server)에 위치해야한다.

SSH 접속을 시도하면 SSH Client가 로컬 머신의 비공개키와 원격 머신의 비공개키를 비교해서 둘이 일치하는지를 확인한다.


SSH Key 만들기

SSH Key를 통해서 서버에 접속 할 때 Unix 계열(리눅스, 맥)에서는 ssh-keygen이라는 프로그램을 사용한다.

SSH Keygen 사용하기

키를 생성한다.

$ ssh-keygen

엔터를 누르면 기본 경로에 키가 생성된다. 기본 경로는 로그인 한 사용자의 홈 디렉토리 아래의 .ssh이다. ($HOME/.ssh) SSH Client는 기본적으로 이 디렉토리에 있는 키를 이용해서 인증을 시도한다.
(passphrase는 일종의 비밀번호로 비공개키를 입력한 값으로 암호화한다. 권장 값은 10~30문자이고 생략 가능하다. 자동 로그인을 원한다면 생략해야 한다.)

키를 확인한다.

$ ls -al ~/.ssh/


- id_rsa : private key, 절대 타인에게 노출되면 안된다.
- id_rsa.pub : public key, 접속하려는 리모트 머신의 authorized_keys에 입력한다.
- authorized_keys : 리모트 머신의 .ssh 디렉토리 아래에 위치하면서 id_rsa.pub 키의 값을 저장한다.

이제 id_rsa.pub 파일을 리모트 서버의 $HOME/.ssh/authorized_keys 파일에 추가해줘야 한다.


SSH Server의 authorized_keys 의 내용이 SSH Client의 id_rsa.pub 파일과 같아야 한다. 그래서 ssh 접속을 할 때 id_rsa 파일과 authorized_keys 파일의 내용을 비교할 수 있다. SSH Client의 id_rsa.pub 파일을 일반적으로 SCP를 이용하여 SSH Server로 전송한다.

$ scp $HOME/.ssh/id_rsa 리모트 머신의 아이디@리모트 머신의 호스트 주소:저장할 파일

위와 같은 명령어로 파일을 전송한 후 리모트 머신에서 다음 명령어로 authrozied_keys 파일을 추가해 준다.

$ cat $HOME/id_rsa.pub >> $HOME/.ssh/authrized_keys


SSH를 이용해서 접속하기

다음과 같이 비밀번호 없이 접속이 가능하다.

$ ssh 리모트 머신의 아이디@리모트 머신의 호스트 주소

만약 id_rsa 파일을 $HOME/.ssh/id_rsa에 만들지 않고 다른 디렉토리에 만들었다면 -i 옵션을 사용한다.
(접속 오류시 -v 옵션을 이용하면 어디에서 문제가 발생했는지 추적하는데 도움이 된다.)

$ ssh -i $HOME/auth 리모트 머신의 아이디@리모트 머신의 호스트주소





Comments