2008년 6월 12일 목요일

SCP를 사용하여 자동으로 데이터백업

어떻게 하면 SCP를 이용해 Password를 입력하지 않고 백업할 파일들을 백업서버로 가지고 올 수 있을지를 고민 하다가 알게 된 2개의 사이트를 참조하여 끝내는 성공하게 되었다.
방법은 아래와 같이 하면 된다.

우선 백업서버를 A라고 하자 그리고 백업을 해야 할 파일들이 있는 서버들을 B, C, D...

자 그러면 트러스트 관계를 만들어 보도록 하자.
1. scp를 사용하여 자동으로 데이터를 복사하기 위해서는 두대의 머신이 트러스트(Trusted) 관계에 있어야 된다. 두대의 서버를 트러스트 관계로 만들기 위해서는 공개/개인 dsa 키 쌍을 생성하여 트러스트 관계의 서버에 복사해야 된다. A서버에 ssh나 telnet으로 로그인하여 root 유저에서 다음 명령을 따라 한다.


[root@localhost /]# /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): Enter
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
a5:41:46:fe:37:f5:54:1c:3f:7b:f3:63:16:ea:34:fd root@www.rickinc.com


위와 같이 키 생성이 완료가 되었다면 A서버에서 생성한 키를 B, C, D... 서버에 키를 복사를 다음과 같이 한다.


[root@localhost /]# /usr/bin/scp /root/.ssh/id_dsa.pub B, C, D... 서버 유저ID@B, C, D... 서버 IP:~/:
The authenticity of host 'rickinc.com (172.16.1.33)' can't be established.
RSA key fingerprint is 0c:99:a2:e4:1b:2f:fc:b2:46:f5:a6:b5:cd:12:2a:ec.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rickinc.com,172.16.1.33' (RSA) to the list of known hosts.
B, C, D... 서버 유저ID@B, C, D... 서버 IP's password: (서버 계정의 패스워드 입력)
id_dsa.pub 100% ********************************************************************************* 608 00:00


위와 같이 B, C, D... 서버에 키를 복사하고 난 후 키를 복사한 B, C, D... 서버에 유저ID로 로그인 한다. 그리고 앞에서 복사한 파일의 내용을 .ssh/authorized_keys 파일에 추가하기 위해 유저의 홈 디렉터리에서 다음 명령을 실행한다.


[userid@testserver ~]$ mkdir .ssh
[userid@testserver ~]$ /bin/cat id_dsa.pub > .ssh/authorized_keys


위의 처리 부분이 잘되었는지 확인 하는 방법은 아래의 명령어를 사용하면 된다.

[userid@testserver ~]$ /bin/more .ssh/authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBANEuZIB0w4k+VQsAFDJ0E+J3MQ+7FvHZzFJA4E5Y7fVvtRZEaBKo3kMaH3wb6rKSXVWw8X3pX4442lzNq7g0zCmcXSUZrH3mNQ1jVCj0
it2F9H3rv6zwntWAgJNDFRyZBXcv6ijVuHm4zNqxSlqG3cZLCtx0O8GKsbqNSJAZk/8NAAAAFQDKW7n7BpGcnkfN1MIeRl70ybtiYQAAAIEAr6PmB4ThIflrjojmajfp3y0l
IE2GT5aOC0Y0Guyi9shrnErgqb8vVHsuKfxE+DB/gTPZpi5UigOxudO6ZIL0HN4l1MlpeuBInkjv3jG+qDQZs2YieN2VwOSkWgNTCzAffmTD0z0cfntmnCPCjYkGgwyGRz1x
gU5NbY2dXyK6NbAAAACALzt5avRoktIybJkeZNp0/1xvkD/gBXFbRbkV6eRdG7kKg1LlLapAtxynRaALIeBpHvRHkSlyovZa0BTTGMxy5dsLwVbpISPybqqHDlmnFID3jtwi
855OLwiHVGf/Hj7hmlt1sLMSMiK8nEGZRm2QqtgPKodEP1Dm6HLUoLRHEGo= root@rickinc.cm


확인이 완료 되었다면 보안을 위해 B, C, D... 서버에서 사용한 키 파일을 삭제하고 키가 저장된 파일의 퍼미션을 변경하도록 한다.


[userid@testserver ~]$ rm -f id_dsa.pub
[userid@testserver ~]$ chmod 700 .ssh
[userid@testserver ~]$ chmod 644 .ssh/authorized_keys


여기까지 완료가 되었다면 이제 A서버에서 B, C, D... 서버에 패스워드 없이 접근이 가능하다.
접근하는 방법은 다음과 같이 하면 된다.
/usr/bin/scp 유저ID@서버IP:/home/test/index.html .

이렇게 복사가 되는 화면을 보게 될것이다.

댓글 없음: