CentOS 공개키 인증으로 암호 없이 로그인

Client(PC)에서 키 생성

아래와 같이 ssh-keygen 명령을 이용해서 키를 생성하면, [home directory]/.ssh 디렉토리에 id_rsa.pub 파일이 생성된 것을 확인할 수 있습니다.

$ ssh-keygen -t rsa -C 'your@email.addr'
Generating public/private rsa key pair.
Enter file in which to save the key (/home/deployer/.ssh/id_rsa):
Created directory '/home/deployer/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/deployer/.ssh/id_rsa.
Your public key has been saved in /home/deployer/.ssh/id_rsa.pub.
The key fingerprint is:
df:07:63:c5:46:ff:9b:ac:03:b6:ed:70:b7:77:f2:1e your@email.addr
The key's randomart image is:
+--[ RSA 2048]----+
|              .  |
|             o . |
|              + .|
|             o  .|
|        S   +   .|
|         . = o. o|
|          o.=..E |
|           .o++ =|
|            .o.==|
+-----------------+

Server에서 키 등록

서버에서는 로그인 하려는 사용자의 홈디렉토리에 .ssh 디렉토리와 .ssh/authorized_key 파일을 생성하고, 파일 내용으로 id_rsa.pub 키를 넣어 줍니다.

$ cd ~
$ mkdir -m 700 .ssh
$ cd .ssh

### Client에서 생성한 id_rsa.pub 키 값을 내용으로       ###
### authorized_keys 파일을 ~/.ssh 디렉토리에 생성합니다 ###
$ echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvrdrApARFpicubfKHMVmNpEB6P3KsoVuXQOPPTPTOTveWsrYiPYesFSn6c9xaS3ZN8041A0/pIZU2clc94Rt+hPoU0Lgpv2nZ8WJoVPXNbHWRehF8VtrpOp4emnyi52wRtzGF7pBaazwRhNVFI1HF89IwEKX8LNXAsbOmpTR9HGZ5Y+qt2dZzRdX4s7G3ReqFa6t8lkErVolr9Z8HxyAZ9ubOQ58tK4uTnFdSAa1bRWeEKO/E+GfPnuMfFu2kT//9BrDDc2iy/eTtXL/3bJ4CNJ0ydDutGNP/H+D2IPgXx2ueawXVACSEQ4gczBTTTy/XJjHsaLiX23Z3eb+4BFvhQ== your@email.addr' >> authorized_keys

### authorized_keys 파일에 권한 설정                   ###
$ chmod 600 authorized_keys

Server에서 키 기반 인증 허용

/etc/ssh/sshd_config 파일의 내용을 확인한 후, 키 기반 인증이 허용이 안되어 있으면 수정한다.

아래와 같이 키 기반 인증에 관한 항목에 주석 처리가 되어 있으면 주석을 해제한다.

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile      .ssh/authorized_keys

sshd_config 파일을 수정했으면 sshd를 재시작한다.

$ service sshd restart
신고