* SSH Authorized Key 사용법

1. 인증키 사용하기

인증키를 사용하는 것은 로그인 할때마다 암호를 직접 입력하는 것보다 더욱 안전하며, 하나의 암호로 여러 ssh서버에 접속할수 있는등의 장점을 가진다.

1.1 인증키 만들기

인증키는 ssh-keygen로 만든다. dsa 방식의 인증키를 만들기 위해 다음과 같이 실행한다.

인용:
# ssh-keygen -t dsa


그러면 다음과 같이 키가 저장될 곳과 이름을 물어오는데 디폴트로 하려면 엔터를 치고 넘어가면 된다.

인용:
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/youraccountname/.ssh/id_dsa):


그런 다음 passphrase를 물어오는데 passphrase 같은 경우 엔터를 치면 디폴트로 사용하지 않는 상태가 된다. passphrase를 사용하려면 원하는 문구를 입력해주고 확인용으로 한 번 더 입력해주면 된다. passphrase 사용 시 접속할 때마다 입력하는 수고를 덜기 위한 방법으로 ssh-add와 ssh-agent를 사용하는 방법이 있는데 이것에 대해서는 1.3절에서 설명한다.

인용:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:


입력을 완료하게 되면 다음과 같은 메시지와 함께 public key와 private key가 생성된다.

인용:
Your identification has been saved in /home/youraccountname/.ssh/id_dsa.
Your public key has been saved in /home/youraccountname/.ssh/id_dsa.pub.
The key fingerprint is:
63:21:ee:ad:0a:7a:bf:68:51:1e:07:08:5d:de:78:0f youraccountname@hostname


1.2 public key 등록

~/.ssh/ 안에 한쌍의 키(default: id_dsa와 id_dsa.pub)가 생성되어 있을 것이다. 그 중 public key를 접속할 remote server들의 ~/.ssh/에 authorized_keys라는 이름으로 복사해준다.

인용:
# scp ~/.ssh/id_dsa.pub youraccountname@hostname.domain:~/.ssh/authorized_keys


물론 이 때에는 scp를 사용하기 위해서 계정 암호를 입력해야 한다.

이제 ssh 접속을 진행 해보면 계정암호가 아닌 인증키 암호를 물어볼 것이다. 만약 계정 암호를 물어본다면 authorized_keys의 퍼미션이 잘못되어 있는 것이므로, 일단 접속을 한 후 chmod 644 ~/.ssh/authorized_keys를 실행시켜 퍼미션을 변경하여 준다.

openSSH는 두가지 프로토콜의 인증키를 동시에 쓰는것이 가능한데, 만들어진 publice key를 위와 같은 방법으로 remote server의 ~/.ssh/authorized_keys2 에 저장하면 된다.

2. Authorized Key를 메모리에 상주 시키기

다음 방법으로 Authorized Key를 메모리에 기억시켜 두면 처음 한 번만 passphrase를 입력하면 다음부터는 암호를 입력하지 않아도 같은 Authorized key를 사용하는 모든 서버들에 접속할수 있다. 물론 이 방법은 passphrase를 사용할 때만 해당된다.

다음과 같이 실행한다.

인용:
# eval $(ssh-agent)


그럼 다음과 같은 메세지를 보여줄 것이다.

인용:
Agent pid 31234


위의 pid는 다를 수 있다. 다음으로 ssh-add를 실행한다.

인용:
#ssh-add


그럼 다음과 같은 메시지가 출력된다.

인용:
Identity added: /home/youraccoutname/.ssh/id_dsa (youraccountname@hostname.domain)


이제 인증키를 복사해둔 ssh서버에 접속하면 이 세션에서는 더 이상 암호를 묻지 않을 것이다.