티스토리 뷰

리눅스 시스템 사이에서 백업을 해야 할일이 생겨서 이것저것 찾아 보다가..
rsync를 사용하기로 했습니다.

우선 ssh를 통해서 rsync 백업을 할려고 하면, password를 묻습니다.
한번씩 할 때는 패스워드를 치면 상관없지만, crontab을 사용해서 주기적으로 할려고 하면 문제가 발생합니다.

해결하는 방법을 이것저것 찾았는데 2가지 정도가 나오네요.

첫번째는 ssh-keygen을 통해서 패스워드를 묻지 않게 하는 방법 입니다.

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/finetech/.ssh/id_rsa):
/home/finetech/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/finetech/.ssh/id_rsa.
Your public key has been saved in /home/finetech/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:uiPSOlmCY5miRfqfxlBYa40WelCR3pFWjwYDm0j318I finetech@finetech
The key's randomart image is:
+---[RSA 2048]----+
|  ..=+oo.        |
| ..o++++ +       |
|  .*oB..E o      |
|  + O oo .       |
| +o=    S        |
|=++ .  .         |
|++ B  .          |
|. = =...         |
|  .*o...         |
+----[SHA256]-----+
$ cat ~/.ssh/id_rsa.pub | ssh [원격ID]@[원격HOST] "cat >> .ssh/authorized_keys"
password: 암호입력<ENTER>

이렇게 설정을 해 두면, 해당 원격 서버에 접속할때 암호를 전혀 묻지 않게 됩니다.

$ rsync -avz --delete -e ssh [원격HOST]:/home/source /home/target

이런식으로 백업 하시면 됩니다.

하지만, 뭔가 찝찔하죠..
누구나 이 자리에 앉으면 패스워드를 몰라도 원격 호스트에 접근을 할 수 있게 되죠…

접근이 안 된다면, 서버에 접속해서, .ssh/authorized_keys 의 퍼미션을 600 으로 수정해 줍니다.


$ ssh [원격ID]@[원격HOST]

$ chmod 600 ~/.ssh/authorized_keys

두번째는 sshpass를 사용해서 접근하는 방법니다.

CentOS나 fedora에서는 기본 yum해서는 들어 있지 않습니다.
아래와 같이 epel을 통해서 받습니다.


$ sudo su -

$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm

$ yum update

$ yum -y install sshpass

이렇게 설치해 주시면 됩니다.
Ubuntu를 쓰시는 분들은 apt-get으로 받으세요.

$ sudo apt-get install sshpass

sshpass을 사용법을 알아보면.. 아래와 같습니다.

sshpass -p ‘[암호]’ ssh [원격ID]@[원격HOST]

$ sshpass -p 'myPassword' ssh username@server.example.com

이런식이죠…

그러면, 이걸로 rsync를 해 봐야 겠죠?

$ rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/

이렇게 하시면 됩니다.

참 쉽죠?

여기서 주기적으로 백업을 하고 싶다면..

$ crontab -e

이렇게 뛰우시고 내용을 수정하시면 됩니다.

*/5 * * * * rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/

이렇게 해 두면 5분 주기로 백업이 진행 됩니다.

하지만, 이건 더욱 찝찝합니다. 패스워드가 코드에 들어가 있으니 -_-;;
잘 고민해서 사용하세요..
그래도 한다면.. 1번이 조금 괜찮을 듯…


댓글
댓글쓰기 폼