2025年3月26日 星期三 甲辰(龙)年 月廿五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 系统应用 > Linux

rsync安装使用教程

时间:05-24来源:作者:点击数:26

一、说明

自接解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.1rsyncdaemon单向传输限制探讨

假设场景是,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/
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门