2010년 6월 30일 수요일

명령어 하나로 여러대 자원 관리하기 (SSH 인증키 사용)

문제의 요점은 여러대의 동일한 시스템을 관리하는데 있어서 반복되는 작업이 잦다는것..
이걸 어떻게하면 좀더 편리하게 할수 있느냐에서 출발한다.

물론 주기적으로 반복되는 명령어 작업이라면 CRON을 통해서 스케줄을 걸어두면 되겠지만 문제는 비정기적인 작업이다.

원리는 SSH 인증키를 가지고 스크립트를 만들어서 작업하면 100대, 1000대라도 문제 없다는것!!
SSH 인증키란 간단히 말해서 나와 서버간의 약속된 키이다.


인증키 생성하기
인증키는 ssh-keygen를 통해서 만든다. 키를 생성할때 사용할 키의 형태를 지정해 주는데 원격 서버가 SSH 프로토콜 버전 2를 지원한다면(요즘은 기본지원한다.)  rsa, dsa  프로토콜 1만을 지원한다면 rsa1 을 사용하면 된다.
컨트롤할 서버에서 인증키를 생성한다.

키가 저장될 곳과 이름을 물어 오는데 디폴트로 그냥 엔터를 치고 넘어가면, 다음과 같이 인증키 암호를 물어온다. 원하는 암호를 두번 반복해서 입력해주면 키가 생성된다.
인증키 생성시 인증키 암호를 공백으로 (passphrase 를 물어올때 그냥 엔터를 치면 된다) 만들경우에는 ssh 접속시 암호를 입력하지 않아도 그냥 접속이 되므로 편리하나 키관리에 주의를 기울여야 한다...

우리는 암호없이 접근하려고 하니깐 그냥 엔터 (Enter)  

[root@localhost ~]# 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:
ea:24:ca:36:af:99:e6:4f:96:d2:b6:0f:25:75:fc:ea mojily@chonnom.com

※ -t : type   Specify type of key to create.


공개키 사용하기
기본 경로에 키를 저장하였다면 /root/.ssh/ 위치에 id_rsa 와 id_rsa.pub가 생성되어 있다.
.pub 확장자가 붙은 것이 공개키로 이 파일을 관리할 원격서버들의 ~/.ssh/ 에 authorized_keys 라는 이름으로 복사해준다.
scp 를 이용해서 파일을 밀어 넣어준다.

[root@localhost .ssh]# scp id_rsa.pub root@xxx.xxx.xxx.xxx:/root/.ssh/authorized_keys
root@xxx.xxx.xxx.xxx's password:
id_rsa.pub                                                                                                                  100%  397     0.4KB/s   00:00


관리대상의 서버들에 접속해서 보면 authorized_keys 부분이 확인된다.

[root@localhost .ssh]# ls -al
total 24
drwxr-xr-x 2 root root 4096 Jan 26 11:29 .
drwxr-x--- 5 root root 4096 Jan 26 11:29 ..
-rw-r--r-- 1 root root  397 Jan 26 11:29 authorized_keys


기본적인 작업은 다 끝났다...
컨트롤할 서버에서 작업대상 원격 서버로 ssh 접근을 시도해보면...암호인증없이 로그인이 되는걸 확인가능하다.

[root@mojily .ssh]# ssh -lroot xxx.xxx.xxx.xxx
Last login: Tue Jan 26 11:32:28 2010 from xxx.xxx.xxx.xxx
[root@localhost ~]#


댓글 없음:

댓글 쓰기