작은숲:위키노트/SSH RSA 인증 로그인

큰숲백과, 나무를 보지 말고 큰 숲을 보라.

SSH에서는 RSA 인증 방식을 통한 로그인을 지원한다. 로그인할 때 계정 비밀번호를 입력하지 않고 RSA 개인키와 공개키를 사용해 로그인하는 방식이다. sshd 설정을 통해 비밀번호를 입력해 로그인하는 방식을 막고 RSA 인증 방식만 사용하도록 설정하는 것도 가능하다.

RSA 개인키와 공개키 만들기

SSH에서 RSA 인증 방식으로 로그인하려면 우선 RSA 개인키와 공개키가 있어야 한다. 기존에 만들어놓은 키가 있다면 그대로 사용해도 되지만 그렇지 않다면 새로 만들어준다. 리눅스에서는 OpenSSL의 ssh-keygen으로 만들 수 있다.

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/somebody/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/somebody/.ssh/id_rsa.
Your public key has been saved in /home/somebody/.ssh/id_rsa.pub.
The key fingerprint is:
25:b3:94:c9:c3:fb:76:7f:d9:66:61:19:2a:af:12:00 somebody@yourdomain
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|  E  . . o       |
|   .  o B .    . |
|   ..  +.=.   +  |
|     .. So . o . |
|      ... . . +  |
|       .o..  + . |
|      .. . .  o  |
|       .    ..   |
+-----------------+

콘솔에서 ssh-keygen -t rsa 명령을 실행하면 개인키를 ~/.ssh/id_rsa 파일에 저장하고, 공개키를 ~/.ssh/id_rsa.pub 파일에 저장한다. 개인키는 호스트에 얌전히 모셔두고 공개키만 필요한 곳에 사용한다. 개인키는 말 그대로 자신만 사용하는 것이다. 이것을 공개하면 큰일(?) 난다. RSA 키를 만드는 도중 설정할 비밀번호를 물어보는데 여기서 비밀번호를 설정하면 앞으로 이 키를 사용할 때마다 물어본다. 만약 매번 비밀번호를 입력하는 것이 귀찮다면, 위험을 감수하고 그냥 ↵ Enter를 눌러도 된다.

접속할 서버에 공개키 등록

이제 접속하고자 하는 서버의 ~/.ssh 디렉토리에 방금 만든 공개키를 올려둔다. 이때 scp 등으로 안전하게 옮기는 것이 좋다. 그런 다음 아래 명령을 실행해 이 서버에서 공개키를 사용할 수 있도록 등록한다.

$ cat id_rsa.pub >> authorized_keys

이제 개인키가 저장된 호스트에서 공개키를 등록한 서버로 로그인할 때는 서버의 로그인 비밀번호가 아닌 개인키의 비밀번호를 사용하면 된다. 개인키의 비밀번호를 설정하지 않았다면 비밀번호를 묻지 않고 곧바로 로그인 된다. 서버에 로그인이 되지 않는다면 서버의 sshd 설정에 아래 내용이 있는지 확인한다.

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

PuTTY 등에서 RSA 인증 방식 사용

윈도우의 SSH 클라이언트인 PuTTYWinSCP 프로그램을 사용할 때도 RSA 인증 방식으로 로그인할 수 있다. PuTTY에서 사용하는 RSA 키는 OpenSSL로 만든 RSA 키와 형식이 다르기 때문에 만약 리눅스 호스트에서 만든 RSA 키를 그대로 사용하려면 만들었던 개인키를 가져와서 PuTTY와 함께 배포되는 puttygen 프로그램으로 PuTTY에 맞게 변환해야 한다. 꼭 이전에 만들었던 RSA 키를 사용해야 하는 경우가 아니라면 puttygen으로 RSA 키를 생성해서 사용하는 것이 좋다.

참고