리눅스 시스템 사이에서 백업을 해야 할일이 생겨서 이것저것 찾아 보다가..
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번이 조금 괜찮을 듯…
댓글