rsync基于rsync-deamon认证

参考:https://blog.csdn.net/weixin_65690979/article/details/128975375

介绍

  • ssh的本质是通过管道通信,即是远程shell。而rsync-deamon则是采用TCP连接,让远程主机上运行rsync服务,使其监听在一个端口上,等待客户端的连接。它监听套接字等待client端的连接,连接建立后所有通信方式都是通过套接字完成的
  • rsync 协议认证不需要依赖远程主机的 sshd 服务,但需要远程主机开启 rsyncd 服务,本地 rsyncd 服务可不必开启。
  • 另外,rsync 协议认证不是直接使用远程主机的真实系统账号,而是虚拟账号和虚拟密码,且可实现无需手动输入密码,同时 rsync 协议认证需要配置模块对远程同步的目录进行限制。对比 ssh 认证,rsync 协议认证安全性更高。
  • rsync在rsync-daemon认证方式下,默认监听TCP的873端口。
  • rsync-daemon认证方式,需要服务器和客户端都安装rsync服务,并且只需要rsync服务器端启动rsync,同时配置rsync配置文件
  • 客户端启动不启动rsync服务,都不影响同步的正常进行。

服务端配置

创建用户

[root@backup ~]# id rsync
id: rsync: No such user
[root@backup ~]# useradd -s /sbin/nologin -M rsync
#(-s创建用户shell,/sbin/nologin表示不登录,—M rsync表示不创建用户rsync家目录)

创建目录

[root@backup ~]# mkdir /backup/
[root@backup ~]# chown -R rsync:rsync /backup/

创建密码文件

[root@backup ~]#echo "rsync_backup:neubla123" >> /etc/rsync.password
[root@backup ~]#chmod 600 /etc/rsync.password

配置文件

 vim /etc/rsyncd.conf
# 以 rsync 用户启动进程
# 传输文件使用的用户和用户组,如果是从服务器=>客户端,要保证rsync用户对文件有读
# 取的权限;如果是从客户端=>服务端,要保证rsync对文件有写权限。
uid = rsync
gid = rsync
 
# 无需让rsync以root身份运行,允许接收文件的完整属性
fake super = yes
# 禁锢推送的数据至某个目录, 不允许跳出该目录
# 允许chroot,提升安全性,客户端连接模块,首先chroot到模块path参数指定的目录
# 下,chroot为yes时必须使用root权限,且不能备份path路径外的链接文件
use chroot = no
max connections = 200                 # 最大连接数
timeout = 300                         # 超时时间
pid file = /var/run/rsyncd.pid        # pid文件路径
lock file = /var/run/rsync.lock       # 锁文件路径
 
exclude = lost+found/                 # 剔除某些文件或目录,不同步
transfer logging = yes                # 记录传输文件日志
log file = /var/log/rsyncd.log        # 指定日志文件
log format = %t %a %m %f %b           # 日志文件格式
ignore errors                         # 忽略错误信息
read only = false                     # 对备份数据可读写
list = false                          # 不允许查看模块信息
 
hosts allow = 192.168.42.0/24         # 只允许192.168.42.0/24段ip连接
hosts deny = 0.0.0.0/32               # 不允许所有网段ip连接
auth users = rsync_backup              # 定义虚拟用户,作为连接认证用户
secrets file = /etc/rsync.password     # 定义rsync服务用户连接认证密码文件路径
 
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # 设置不需要压缩的文件
#### 定义模块信息
[backup]
comment = "backup dir by nebula"      # 模块注释信息
path = /backup                        # 定义接收备份数据目录

启用服务

rsync --daemon

//关闭服务
pkill rsync

客户端配置

创建认证文件

客户端的认证文件只需要有密码即可

[root@nfs01 ~]# echo "nebula123" >> /etc/rsync.password
 
[root@nfs01 ~]# chmod 600 /etc/rsync.password

数据传输

交互式(需要输密码)

[root@nfs01 ~]# rsync -avzP /etc/hosts rsync_backup@192.168.42.101::backup
Password:
sending incremental file list
hosts
357 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 63 bytes received 33 bytes 9.14 bytes/sec
total size is 357 speedup is 3.72

免交互式 (有/etc/rsync.password文件,不需要输入密码)

[root@nfs01 ~]# rsync - avzP /etc/hosts rsync_backup@192.168.42.101::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
357 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 199 bytes received 27 bytes 150.67 bytes/sec
total size is 357 speedup is 1.58

查看日志

日志文件/var/log/rsyncd.log

posted @ 2024-01-26 16:31  hasome  阅读(47)  评论(0编辑  收藏  举报