ssh-key를 생성하여 서버에 패스워드 없이 접속하는 방법
1. 클라이언트에서 ssh-keygen 명령으로 ssh-key를 생성한다.
– ssh-keygen -t rsa 명령으로 ssh key를 생성한다. key를 생성하면, 홈 디렉토리내의 .ssh 디렉토리에 id_rsa, id_rsa.pub 두개의 파일이 생성된다.
[root@localhost root]# cd /root/.ssh/
[root@localhost .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
b5:69:64:dd:16:70:b9:6d:b7:2f:36:da:39:ba:b0:e3 root@localhost
[root@localhost .ssh]# ls
id_rsa id_rsa.pub known_hosts
2. 생성된 key를 서버에 복사하기
– 생성된 id_rsa.pub 파일을 서버에 복사한다. 서버에 복사할 때는 접속하려는 계정의 홈 디렉토리 내에 .ssh/authorized_keys라는 파일 명으로 복사해 넣는다. 만약 여러대의 클라이언트에서 서버에 패스워드 없이 접속을 하기 위해서는, 각각의 클라이언트에서 key를 생성하고, id_rsa.pub 파일의 내용을 서버의 authorized_keys 파일에 추가해서 붙여 넣으면 된다.
[root@localhost .ssh]# scp id_rsa.pub 10.30.100.32:/root/.ssh/authorized_keys
The authenticity of host ‘10.30.100.32 (10.30.100.32)’ can’t be established.
RSA key fingerprint is 76:fa:84:e5:f9:de:46:18:56:7c:87:5f:c0:11:21:e5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘10.30.100.32’ (RSA) to the list of known hosts.
root@10.30.100.32’s password:
id_rsa.pub 100% |***************************************************************************| 224 00:00
3. 패스워드 없이 서버에 접속 테스트를 한다.
[root@localhost .ssh]# ssh 10.30.100.32
Last login: Tue Jun 24 14:40:23 2008 from 10.30.100.118
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:FC:69:5F:F0
inet addr:10.30.100.32 Bcast:10.30.101.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5668 errors:0 dropped:0 overruns:0 frame:0
TX packets:2536 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:549777 (536.8 KiB) TX bytes:297273 (290.3 KiB)
Interrupt:16 Base address:0xcc00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@localhost ~]#
– 만약 접속이 불가능 하다면, 서버의 sshd_config(/etc/ssh/sshd_config) 파일에서 아래의 사항을 확인한다. 주석처리가 되어 있을 경우 주석을 제거하고 ssh데몬을 재시작 한 후에 접속 테스트를 한다.
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys