Rsync + ssh 安全通道进行同步.docx

上传人:b****7 文档编号:10271536 上传时间:2023-02-09 格式:DOCX 页数:24 大小:23.97KB
下载 相关 举报
Rsync + ssh 安全通道进行同步.docx_第1页
第1页 / 共24页
Rsync + ssh 安全通道进行同步.docx_第2页
第2页 / 共24页
Rsync + ssh 安全通道进行同步.docx_第3页
第3页 / 共24页
Rsync + ssh 安全通道进行同步.docx_第4页
第4页 / 共24页
Rsync + ssh 安全通道进行同步.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

Rsync + ssh 安全通道进行同步.docx

《Rsync + ssh 安全通道进行同步.docx》由会员分享,可在线阅读,更多相关《Rsync + ssh 安全通道进行同步.docx(24页珍藏版)》请在冰豆网上搜索。

Rsync + ssh 安全通道进行同步.docx

Rsync+ssh安全通道进行同步

Rsync+ssh安全通道进行同步

出自学习笔记

跳转到:

导航,搜索

目录

1应用说明

1.1加密传输

1.2同步方向

2环境说明

2.1硬件环境

2.2网络环境

2.3系统环境

3软件简介

3.1SSH的简介

3.2RSYNC的简介

4软件安装

4.1SSH的安装

4.2RSYNC的安装

4.2.1ports方式安装

4.2.2手工安装

4.3ssh的配置

4.3.1创建帐户

4.3.2生成公钥和私钥

4.3.3拷贝到客户端

4.3.4测试登录

5Rsync的配置

5.1Rsync的常用参数

5.2控制脚本

6运行

7结束语

8附录

8.11RSYNC参数详解

8.22中文编码问题

应用说明

正如很多人知道的那样,Rsync可是开源同步软件中的老大哥。

很多人(当然也包括我自己)都在使用它来进行同步、备份工作。

它的功能强大,应用灵活,就不多说了。

如果对Rsync前世今生很感兴趣,那么一会看看简介,然后到他们官方网站好好看看。

虽然Rsync很强大,但是它并没有直接支持加密传输。

也就是说,它是直接明文传输的,对于一些安全要求高的数据,那就不太保险了。

不信?

你可以用抓包工具试试看。

如果要传输保密文件,那怎么办?

放心,Rsync提供了ssh通道功能。

也就是通过ssh安全通道来传输,传输过程中,数据是经过ssh加密的。

不信?

你还是可以抓包看看。

这就是我们要进行的工作了,配置一个具有ssh安全通道的,安全级别高的同步体系。

加密传输

我们利用SSH来达到安全通道的目的。

SSH的RSA和DSA认证协议的基础是一对专门生成的密钥,分别叫做专用密钥和公用密钥(简称私钥和公钥,下面我们都使用简称)。

使用这些基于密钥的认证系统的优势在于:

在许多情况下,有可能不必手工输入密码就能建立起安全的连接。

尽管基于密钥的认证协议相当安全,但是如果不注意保护,把私钥泄露了,那么别人也就可以登录到有公钥的服务器。

那就很不安全了。

因此居于安全考虑,我们进行的同步配置,是居于普通用户来进行备份的。

同步方向

在这里采用的,不是常见的C/S模式,即源服务器运行rsync--daemon模式,备份服务器主动同步。

而是采用SSH通道模式,不需要配置rsync--daemon。

从源服务器直接同步到备份服务器。

环境说明

我配置的是A、B两台主机,A主机做为源服务器,B主机作为客户端。

硬件环境

两台服务器的配置一样,硬件配置如下:

单志强2.4GCPU

2G内存

36GSCSI硬盘

1Ginter网卡

网络环境

两台服务器在同一个机房,但是不同网段。

IP地址分别设置如下:

A服务器的IP地址:

192.168.8.8

B服务器的IP地址:

192.168.11.11

系统环境

操作系统:

A、B两台服务器均安装了FreeBSD6.2-RELEASE-p2(通过makeworld升级到最新)。

SSH是系统自带的版本:

#ssh-V

OpenSSH_4.5p1FreeBSD-20061110,OpenSSL0.9.7e-p125Oct2004

软件简介

由于我们是在unix/linux下使用SSH和RSYNC,因此仅仅介绍SSH和RSYNC,而不介绍系统以及其他软件。

SSH的简介

SSH是英文SecureShell的简写形式。

通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。

SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。

最初的SSH是由芬兰的一家公司开发的。

但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。

OpenSSH是SSH的替代软件包,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。

目前所发行的开源UNIX/Linux,默认都会带有OpenSSH(一些可能需要你额外的安装一下)。

如果你喜欢的话,也可以安装SSH,他虽然有限制,但是对于非商业用户,是可以免费使用的。

相关链接如下:

http:

//openssh.org

RSYNC的简介

在RSYNC的官方网站上,对于RSYNC的介绍非常简单。

rsync是一个开放源码的快速的文件同步工具,是在GUN的GPL2协议下发布的。

所以任何人都可以免费的使用设置修改和再发行它。

rsync的作者是WayneDavison。

相关链接如下:

http:

//rsync.samba.org/

软件安装

SSH的安装

由于系统会自带有SSH,我们就直接使用系统自带的SSH,而不再单独安装。

我会另外写一个SSH安装配置的专题文章。

RSYNC的安装

我是在FreeBSD上进行的安装配置,因此同时给出利用FreeBSD的ports安装和手工安装两种方式。

其中手工安装方式,也可以在Linux下进行。

ports方式安装

在开始ports安装之前,先做一次ports更新。

这样做的目的是让ports保持最新,并且让通过ports安装的软件是最新的。

用CVSUP更新:

#cvsup-L2-g/opt/etc/ports-supfile

你需要根据自己的ports-supfile文件路径来指定。

进入rsync的ports目录:

#cd/usr/ports/net/rsync/

查看软件版本信息:

#catdistinfo

MD5(rsync-2.6.9.tar.gz)=996d8d8831dbca17910094e56dcb5942

SHA256(rsync-2.6.9.tar.gz)=ca437301becd890e73300bc69a39189ff1564baa761948ff149b3dd7bde633f9

SIZE(rsync-2.6.9.tar.gz)=811841

由此我们可以得知rsync的版本是2.6.9,也就是目前最新的发行版本。

选择配置:

#makeconfig

[]POPT_PORTUsepoptfromdevel/poptinsteadofbundledone

[X]TIMELIMITTimelimitpatch

[X]FLAGSPFilesystemflagssupportpatch,adds--flags

[]ACLSPACLsupportpatch,adds--acls

[X]SSHUseSSHinsteadofRSH

在出现选项界面里,通过移动上下键和空格键,选择SSH,也就是用SSH替换RSH。

其他的默认就可以了。

完成安装:

#makeinstallclean

很简单吧?

使用ports的好处就是,安装太方便了。

只要执行makeinstall它会自动下载,编译,安装。

clean是告诉ports,安装完后,清楚源码文件和其他过程文件。

手工安装

*下载安装包

下载页面:

http:

//rsync.samba.org/ftp/rsync/

具体下载链接:

http:

//rsync.samba.org/ftp/rsync/rsync-2.6.9.tar.gz

*解压和配置

#tar-zxvfrsync-2.6.9.tar.gz

#cdrsync-2.6.9

#./configure--disable-debug--with-rsh=ssh

说明:

由于--with-rsh=默认就是ssh,所以也可以不显式指定这个配置项;

还可以通过--prefix=/path来指定安装目录,默认则安装到/usr/local/bin目录;

关闭调试模式--disable-debug;

也可以通过./configure--help查看更多选项,再根据自己的需要来设定。

*编译和安装

#make

#makeinstall

至此,没有出现什么错误的话,整个手工安装过程就完毕了。

ssh的配置

在这里的配置,当然不是指如何配置SSH服务啦。

而是指配置用来SSH登录相关的帐户的公钥、私钥。

注意:

备份服务器必须运行sshd服务。

创建帐户

在A、B两台服务器上各创建一个普通帐户,不需要设置密码。

在FreeBSD下创建帐户:

#pwuseradd-d/home/mybackup-nmybackup

在Linux下创建帐户:

#useradd-d/home/mybackupmybackup

生成公钥和私钥

这些操作是在同步源服务器,就是有需要做备份数据的服务器。

这里是指A主机。

首先,切换到mybackup帐户以及该帐户的用户目录下:

#sumybackup

$cd~

$pwd

/home/mybackup

$mkdir.ssh

$cd.ssh

$pwd

/usr/home/mybackup/.ssh

生成公钥、私钥:

$ssh-keygen-tdsa-b1024

Generatingpublic/privatedsakeypair.

Enterfileinwhichtosavethekey(/home/mybackup/.ssh/id_dsa):

Enterpassphrase(emptyfornopassphrase):

Entersamepassphraseagain:

Youridentificationhasbeensavedin/home/mybackup/.ssh/id_dsa.

Yourpublickeyhasbeensavedin/home/mybackup/.ssh/id_dsa.pub.

Thekeyfingerprintis:

20:

7c:

c3:

b4:

69:

a7:

e1:

af:

f3:

e3:

ae:

e7:

9d:

0a:

b6:

69mybackup@

注意:

当提示Enterpassphrase(emptyfornopassphrase):

时,不要输入,直接回车;并且提示Entersamepassphraseagain:

时,也直接回车。

这时候,我们就会得到公钥、私钥两个文件在.ssh目录下。

我们查看一下:

$ls-al.ssh

total8

drwxr-xr-x2mybackupmybackup512Mar2217:

48.

drwxr-xr-x3mybackupmybackup512Mar2217:

46..

-rw-------1mybackupmybackup672Mar2217:

48id_dsa

-rw-r--r--1mybackupmybackup613Mar2217:

48id_dsa.pub

其中id_dsa是密钥文件,id_dsa.pub顾名思义,是公钥文件啦。

拷贝到客户端

因为我们之前生成的公钥、密钥,都是在源服务器上操作。

而客户端(做备份的服务器)上,需要有刚才生成的公钥,才能不提示输入密码,直接登录ssh。

使用scp来远程拷贝:

$scp/home/mybackup/.ssh/id_dsa.pubroot@192.168.11.11:

/home/mybackup/.ssh/authorized_keys

如果用户名、密码和文件路径没有错误,在按提示输入192.168.11.11的root密码后,很快就会把id_dsa.pub文件拷贝过去了。

测试登录

将公钥拷贝到客户端后,我们来测试下能不能在源服务器上不用输入密码ssh登录客户端服务器。

$ssh-lmybackup192.168.11.11

或者:

$sshmybackup@192.168.11.11

如果没有提示输入密码,就登录到192.168.11.11服务器,那恭喜你,说明配置成功了。

Rsync的配置

事实上,我们在利用SSH通道来运行RSYNC时,是不需要配置一个Rsync服务器的。

在这里我们指的配置,是有两方面,一是运行rsync的参数,一是运行同步控制的脚本。

Rsync的常用参数

rsync常用的运行参数说明:

-v,–verbose详细模式输出

-c,–checksum打开校验开关,强制对文件传输进行校验

-a,–archive归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r,–recursive对子目录以递归模式处理

-p,--perms保持文件权限

-o,--owner保持文件属主信息

-g,--group保持文件属组信息

-e,--rsh=COMMAND指定替代rsh的shell程序

--delete删除那些DST中SRC没有的文件

--progress显示备份过程

-t,--times保持文件时间信息

-z,--compress对备份的文件在传输时进行压缩处理

--stats给出某些文件的传输状态

测试rsync同步,将A主机的/opt/etc同步到B主机的/tmp/myetc目录下:

$rsync-vzrtopg--progress--stats--delete-essh/opt/etcmybackup@192.168.11.11:

/tmp/myetc

然后到B主机的/tmp/myetc目录下看看,是不是发现一个etc目录,并且这个etc目录下面的文件,跟A主机的/opt/etc目录下面的文件一样。

控制脚本

因为往往备份的目录是相对固定的,如果每次备份都要输入那么长一串,会不会觉得很麻烦呢?

那我们写一个脚本来工作,并且利用crontab来定时定点的执行同步工作。

控制脚本代码如下:

#!

/bin/sh

#rsyncer.sh

#authorJonsenYang(16hot)

#home

#date2007-03-20

#

LOCAL_DIR="/opt/etc" ;

REMOTE_USER="mybackup" ;

REMOTE_HOST="192.168.11.11" ;

REMOTE_DIR="/tmp/myetc" ;

RSYNC_CMD="/usr/local/bin/rsync" ;

RSYNC_LOG="/opt/var/log/rsync.log" ;

RSYNC_RUN="${RSYNC_CMD}-vzrtopg--progress--stats--delete-essh${LOCAL_DIR}${REMOTE_USER}@${REMOTE_HOST}:

${REMOTE_DIR}";

${RSYNC_RUN}>>${RSYNC_LOG}2>&1;

#endrsyncer.sh

将rsyncer.sh脚本保存到/opt/bin(或者你自己的工作目录)目录下,还要注意保证设置好mybackup用户可以执行的属性。

$chmod+x/opt/bin/rsyncer.sh

另外,要注意/opt/var/log/rsync.log也必须是mybackup帐户可以读写才行。

运行

经过上面的步骤后,可谓万事俱备,只欠运行了。

其实也很简单,我们只需要设置crontab,定时执行备份脚本进行备份就可以了。

$crontab-e

03***/opt/bin/rsyncer.sh

这样,每天凌晨3点,就会自动执行/opt/bin/rsyncer.sh进行备份了。

结束语

在开源软件里,很多很多很好用而且分文不收的软件。

我们合理的利用这些软件,可以为我们带来很多很多好处。

比如,节省成本,提高工作效率等等。

因此,多学习开源软件,是很好的。

作者:

JonsenYang(16hot、杨明茂)

附录

1RSYNC参数详解

-v,–verbose详细模式输出

-q,–quiet精简输出模式

-c,–checksum打开校验开关,强制对文件传输进行校验

-a,–archive归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r,–recursive对子目录以递归模式处理

-R,–relative使用相对路径信息

-b,--backup创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。

可以使用--suffix选项来指定不同的备份文件前缀。

--backup-dir将备份文件(如~filename)存放在在目录下。

-suffix=SUFFIX定义备份文件前缀

-u,--update仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。

(不覆盖更新的文件)

-l,--links保留软链结

-L,--copy-links想对待常规文件一样处理软链结

--copy-unsafe-links仅仅拷贝指向SRC路径目录树以外的链结

--safe-links忽略指向SRC路径目录树以外的链结

-H,--hard-links保留硬链结

-p,--perms保持文件权限

-o,--owner保持文件属主信息

-g,--group保持文件属组信息

-D,--devices保持设备文件信息

-t,--times保持文件时间信息

-S,--sparse对稀疏文件进行特殊处理以节省DST的空间

-n,--dry-run现实哪些文件将被传输

-W,--whole-file拷贝文件,不进行增量检测

-x,--one-file-system不要跨越文件系统边界

-B,--block-size=SIZE检验算法使用的块尺寸,默认是700字节

-e,--rsh=COMMAND指定替代rsh的shell程序

--rsync-path=PATH指定远程服务器上的rsync命令所在路径信息

-C,--cvs-exclude使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件

--existing仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件

--delete删除那些DST中SRC没有的文件

--delete-excluded同样删除接收端那些被该选项指定排除的文件

--delete-after传输结束以后再删除

--ignore-errors及时出现IO错误也进行删除

--max-delete=NUM最多删除NUM个文件

--partial保留那些因故没有完全传输的文件,以是加快随后的再次传输

--force强制删除目录,即使不为空

--numeric-ids不将数字的用户和组ID匹配为用户名和组名

--timeout=TIMEIP超时时间,单位为秒

-I,--ignore-times不跳过那些有同样的时间和长度的文件

--size-only当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间

--modify-window=NUM决定文件是否时间相同时使用的时间戳窗口,默认为0

-T--temp-dir=DIR在DIR中创建临时文件

--compare-dest=DIR同样比较DIR中的文件来决定是否需要备份

-P等同于--partial

--progress显示备份过程

-z,--compress对备份的文件在传输时进行压缩处理

--exclude=PATTERN指定排除不需要传输的文件模式

--include=PATTERN指定不排除而需要传输的文件模式

--exclude-from=FILE排除FILE中指定模式的文件

--include-from=FILE不排除FILE指定模式匹配的文件

--version打印版本信息

--address绑定到特定的地址

--config=FILE指定其他的配置文件,不使用默认的rsyncd.conf文件

--port=PORT指定其他的rsync服务端口

--blocking-io对远程shell使用阻塞IO

--stats给出某些文件的传输状态

--progress在传输时现实传输过程

--log-format=FORMAT指定日志文件格式

--password-file=FILE从FILE中得到密码

--bwlimit=KBPS限制I/O带宽,KBytespersecond

-h,--help显示帮助信息

2中文编码问题

如果遇到两个系统的字符集编码不一致的问题是,可以使用--iconv参数来解决编码问题。

--iconv=from,to

用法如下:

rsync-vzrtopg--progress--stats--delete--iconv=GB2312,UTF-8-essh/opt/home192.168.0.223:

/opt/

取自"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1