Chinaunix首页 | 论坛 | 博客
  • 博客访问: 639959
  • 博文数量: 102
  • 博客积分: 7242
  • 博客等级: 少将
  • 技术积分: 1440
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-06 14:59
文章分类

全部博文(102)

文章存档

2011年(1)

2010年(12)

2009年(6)

2008年(83)

分类: LINUX

2008-12-16 15:09:24

使用rsync和ssh异地备援
 
http://blog.chinaunix.net/u1/56880/showart_1685376.html

实验环境:
 
A:192.168.1.66(changzi.fedora)做为ssh服务器用来备份。操作系统为fedora10。
B:192.168.1.63(changzi.centos)做为ssh的客户端。操作系统为CentOS5.1。

实验目的:将客户端(B)中的内容同步到ssh服务器(A)中。

软件要求:Open SSH,rsync。

实验说明:
    这个实验分为三个部份:ssh无密码登录;
                       rsync;
                       crontab。
    把数据从B推到A中去。

实验步骤:

一,建立无密码的ssh
1,在ssh服务器端(A)建立新用户changzi,此用户用来进行与ssh客户端(B)建立ssh连接。
# useradd -u 100 -g 48 changzi
# passwd changzi
同样在ssh客户端(B)建立changzi用户

当然这一步可以直接使用root用户,出于安全考虑不使用root用户,而使用sudo受权。

2,为客户端(B)创建密钥
# su changzi
$ mkdir /home/changzi/.ssh
$ cd /home/changzi/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/changzi/.ssh/id_rsa):(默认路径即可)
Enter passphrase (empty for no passphrase): (密钥保护,保留为空,否则使用ssh时将要求输入)
Enter same passphrase again: (密钥保护,保留为空,否则使用ssh时将要求输入)
Your identification has been saved in /home/changzi/.ssh/id_rsa.
Your public key has been saved in /home/changzi/.ssh/id_rsa.pub.
The key fingerprint is:
7a:04:16:36:ab:bf:21:94:5a:2f:ef:90:2a:d1:bc:fb changzi@changzi

$ ls
id_rsa  id_rsa.pub
查看一下,后面的那个是密钥的公共部分

$ cat id_rsa.pub
ssh-dss AAAAB3NzaC1kc3MAAACBANpHI8d8ZdHYabfYnlPa9xyBkkfuYR7QSF8fcWvevBs8N6w+tiNXNnLc38cFxN5N4+JuDELb2qmbGTxSwg3+speF4XQA7MOz5P4IbK6/36NDwoMLh7v1yw8bOYBLt+vUOhfH5fnpnOaUpJk0uwKOytfpOI/WOl73OXjVXcmsc3nbAAAAFQDwPoXyvgbUNlIdud4qbU3C/AaLIQAAAIAKcKKJa4yN0J9jcOIdqoGu66uNr/QwzxGflhew8K2s9i7Y6QR4PBV7GbN9+UAVacim4abJfdHI3fepIj0c6Kl6rir7rjJ18t9HfHv/ooWPwfiB4FR4kqcWtgR6fP94NvlgBnXSaJ/Lc3Wj+YSrm82jF9IBdzmFjyrDkN9SwNeanwAAAIEA2jV3hvZjUV0oktQGIFRwu+MkrPx0S/ANd7fje2i3KomcNZg0RMEHOz34J/2Ie18oseL2x01N6SHFJqi89pRUs+YllVX2UGz8wV7RVGocT9swPS+HI1fo9aDtQ2KQFJ/MhfnVJGWGN5ZQhf4DXAkvZjRftKZSRf9AyXfVhCuTl6U= changzi@changzi

看有的书上写过可以在id_rsa.pub的第一行加入一些限制,如加入下面一行代码:
from="192.168.1.63",no-X11-forwarding,no-agent-forwarding,no-port-forwarding
只允许地址为192.168.1.63的用户,不允许X11或代理转发,不能使用ssh传输来传递发往ssh服务器上别一个UDP或IP端口的IP通信。
本实验尚未考虑到安全的一些配置。(未测试)

3,接下来将上密钥的公共部份(id_rsa.pub)复制到ssh服务器(A)中
这一步就省了,用什么方法复制都行,scp或者控制台的粘贴功能,再或者用U盘考过去。
放到目录中/home/changzi/.ssh/authorized_keys2
authorized_keys2就是id_rsa.pub更名。
$ cat authorized_keys2
ssh-dss AAAAB3NzaC1kc3MAAACBANpHI8d8ZdHYabfYnlPa9xyBkkfuYR7QSF8fcWvevBs8N6w+tiNXNnLc38cFxN5N4+JuDELb2qmbGTxSwg3+speF4XQA7MOz5P4IbK6/36NDwoMLh7v1yw8bOYBLt+vUOhfH5fnpnOaUpJk0uwKOytfpOI/WOl73OXjVXcmsc3nbAAAAFQDwPoXyvgbUNlIdud4qbU3C/AaLIQAAAIAKcKKJa4yN0J9jcOIdqoGu66uNr/QwzxGflhew8K2s9i7Y6QR4PBV7GbN9+UAVacim4abJfdHI3fepIj0c6Kl6rir7rjJ18t9HfHv/ooWPwfiB4FR4kqcWtgR6fP94NvlgBnXSaJ/Lc3Wj+YSrm82jF9IBdzmFjyrDkN9SwNeanwAAAIEA2jV3hvZjUV0oktQGIFRwu+MkrPx0S/ANd7fje2i3KomcNZg0RMEHOz34J/2Ie18oseL2x01N6SHFJqi89pRUs+YllVX2UGz8wV7RVGocT9swPS+HI1fo9aDtQ2KQFJ/MhfnVJGWGN5ZQhf4DXAkvZjRftKZSRf9AyXfVhCuTl6U= changzi@changzi
$ chmod 600 authorized_keys2

下面可以从客户端(B)进行连接至服务器 
$ ssh 192.168.1.66
Last login: Sun Dec  7 20:30:15 2008 from changzi.centos
$

在服务器(A)端可以看一下日志
# tail secure
Dec  7 20:31:36 changzi sshd[5020]: Accepted publickey for changzi from 192.168.1.63 port 3593 ssh2
Dec  7 20:31:36 changzi sshd[5020]: pam_unix(sshd:session): session opened for user changzi by (uid=0)

两个机器的时间差一点,在实验中就不考虑这个了。

4,接下来可以直接复制数据了,客户端和服务器端均以changzi用户登录
在客户端(B)家目录中建立一个测试文件
$ echo "only test">file1
$ cat file1
only test
$ scp file1 192.168.1.66:/home/changzi/file2
file1                                         100%   10     0.0KB/s   00:00   
$
在服务器端(A)可以看到
$ ls
file2
$ cat file2
only test
$

以上第一部分完毕。即建立起ssh无密码登录。
这一个过程如果用root进行的话很方便,包括后面进行传输数据时可以对所有文件进行备份而不用考虑权限。
总结:在客户端上产生的id_dsa和id_dsa.pub是一对密钥,只有用私钥id_dsa才能解开公钥id_dsa.pub。现在你把公钥存在服务器上,你登录服务器的时候,服务器会给提供经过公钥id_dsa.pub(其内容存在authorized_keys2里)加密的数据让你解密,你的机器上用id_dsa这把私钥,去解密,解开之后服务器放行。而别人的机器上没有id_dsa这个私钥,自然无法解密,从而无法无密码登录了。
当然,你要保证你机器上的私钥的安全。否则,如果别人取得了你的私钥,就好比别人取得了你房间的钥匙,然后就可以拿去开你家房门了。

二,rsync
这一步要在ssh客户端创建一些文件来,使用rsync程序和刚才建立的changzi用户将它们复制到ssh服务器上。

1,在客户端(B)建立测试文件
$ pwd
/home/changzi/docs
$ cd docs/
$ ls
Fedora-10-Installation-Configration-FAQ.pdf  fhs-2.3.pdf
Fedora_10_Installation_Guide_Chinese.pdf

2,将客户端的srync服务启动
# chkconfig --list rsync
rsync              off
# chkconfig rsync on
# chkconfig --list rsync
rsync              on

3,进行复制,此步在客户端进行
$ rsync -avlR --delete -e ssh /home/changzi/docs/ 192.168.1.66:/home/changzi/backupdocs
building file list ... done
/home/
/home/changzi/
/home/changzi/docs/
/home/changzi/docs/Fedora-10-Installation-Configration-FAQ.pdf
/home/changzi/docs/Fedora_10_Installation_Guide_Chinese.pdf
/home/changzi/docs/fhs-2.3.pdf

sent 13121660 bytes  received 126 bytes  8747857.33 bytes/sec
total size is 13119594  speedup is 1.00
$
现在已经将客户端的文件复制到了服务器端。
一些选项的意思
-v 进行细节操作
-a 复制源目录的所有文件和目录
-l 符号链接
-R 保留相对路径
--delete 删除在客户端上不再存在的备份服务器上的文件
-e ssh 使用ssh来进行传输
/home/changzi/docs/源目录(B)
192.168.1.66:/home/changzi/backupdocs目标目录(A)

还有一些参数
-z 压缩数据
--bwlimit 通过internet相连的话,用来指定每秒最大几K。
更多参数请man rsync

注意:将要进行备份的目录给予权限,因为我这里并不是用root进行的。
要进行备份的目录不止一个的话最好装备份的命令写入脚本。
这里如果没有设置防火墙相应的规则的话暂且因实验先停掉防火墙。
# service iptables stop


三,crontab
将上面的可执行脚本添加到cron中,即可自动化完成备份任务。

参考:Linux企业集群,[美] Karl Kopper.
     google了一些相关资料。
 
阅读(1841) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-03-23 12:41:16

复杂了,windows 下rsync + ssh + 定时任务可以很简单 http://storage.linuxce.cn/wiki/index.php/%E9%99%84%E5%BD%95%E4%BA%8C_WINDOWS_%E7%8E%AF%E5%A2%83%E4%BD%BF%E7%94%A8_RSYNC_%E5%A4%87%E4%BB%BD%E6%95%B0%E6%8D%AE