rsync安装使用教程

一、说明

自接解Linux服务器后,rsync这个东西就一直若隐若现,但也没人要求帮安装配置什么的所以也就没有研究。

但近来要推弱口令改造,发现挺多就是rsync空口令,搞不懂这是什么东西就很不舒服,所以抽空来研究一下。

 

二、安装

操作系统:CentOS 7

# 客户端和服务端程序都在rsync一个包里,客户机和服务机都装这个包就完事了
yum install rsync -y

 

三、使用

下面介绍rsync的三种使用模式:本机内复制、机器间通过ssh复制、机器间通过daemon复制。

 

3.1 本机内复制

本机内复制,rsync就类似于cp命令,只是参数和cp有区别。

 

3.2 机器间通过ssh复制

其实除了ssh还可以是rsh等,但一是不太熟二是这些东西终将被ssh取代就不管了。

机器间通过ssh复制,rsync就类似于scp命令,可从远程机复制到本机也可以从远程机复制到本机,只是参数和scp有区别。

由于传输借用的是ssh,所以一方面要明确这种模式是不需要启动rsync服务的,另一方面要明确其认证机制和两台机器间的ssh认证机器是一致的(即可以用密码也可用公钥免密等等)。

 

3.3 机器间通过daemon复制

配置/etc/rsyncd.conf:

cat >> /etc/rsyncd.conf << EOF
# 没在模块名下的是全局配置。能在全局配置的项在模块中也都能配置,反之亦然,区别是模块配置的优先级高于全局配置。
# 增加名称为test的模块
[test]
# 模块根目录
path = /tmp/test
# 模块认证用户名。该用户只是rsync的和系统账号没关系。
# 如果没有下边这两个配置项,即为rsync空口令情况。两者必须同时存在,不然不起作用
# 如果要配置多个账号,则账号间用空格或逗号隔开 auth users
= myuser # 模块认证用户名对应密码。格式为明文"username:password",一行一个账号密码对 secrets file = /etc/rsyncd.passwd # 模块ip白名单,白名单优先 # hosts allow = 192.168.220.129 192.168.220.130 192.168.221.0/24 # 模块ip黑名单 # hosts deny = 192.168.220.129 192.168.220.130 0.0.0.0/0 # 禁止自动列出所有模块 # list = no EOF

配置/etc/rsyncd.passwd(其实文件名随意取决于你在/etc/rsyncd.conf中怎么配的。但格式则必须为"username:password"):

cat > /etc/rsyncd.passwd << EOF
myuser:mypass
EOF

另外密码文件只能配置成rsync运行用户有权限读,不然启动服务即便输的密码正确仍会报类似如下错误:

@ERROR: auth failed on module test
rsync error: error starting client-server protocol (code 5) at main.c(1649) [Receiver=3.1.2]

当然也可以直接在配置文件中匹置“strict modes = false”来处理,但并不建议这么做。我们配置为600权限:

chmod 600 /etc/rsyncd.passwd

启动rsyncd服务:

# 默认监听系统tcp 873端口
systemctl restart rsyncd

# 使用自定义端口启动
rsync --daemon --config=/etc/rsyncd.conf --port=22000

命令通过使用IP后接两个冒号(::)区分机器间通过ssh复制模式;两个冒号后接的是模块名(就直接模块名不要前面写/)。

 

四、其他

4.1 rsync daemon单向传输限制探讨

假设场景是,A / B/ C三台机器,B上部署了rsync服务,我们只想让A单向上传文件到B(供C拉取),不想A能从B拉取文件,这个需求如何实现呢。

此时可以设置指向目录相同的两个模块,如叫A-B和B-C,A-B设置“write only = true”(另可搭配hosts allow和host deny)。

 

4.2 rsync匿名账号(anonymous)探测

所谓匿名账号,就是没有用户名密码,本质就是没有设置我们上边说的“auth user”和“secrets file”。

此时不使用用户名密码即可上传下载文件:

# 列出所有模块,不使用账号能查看有哪些模块是rsync允许的,且当前看没法限制
rsync 192.168.220.129::

# 列出具体模块的文件。如果允许匿名账号,则目录被列出
rsync 192.168.220.129::test/

# 如果使用自定义端口。启动和连接都使用--port参数
rsync --port=22000 192.168.220.129::test/

 

posted on 2020-11-03 20:05  诸子流  阅读(3838)  评论(0编辑  收藏  举报