
RHEL-Like
1 前言
一个问题,一篇文章,一出故事。
由于笔者想实现文件通过rsync自动传输,但是又不想使用openSSH的公钥认证导致机器之间可以相互访问,于是便整理此服务的实现。
2 最佳实践
2.1 环境信息
Host Name = rsyncd.cmdschool.org
OS = RHEL 8.x x86_64
IP Address = 10.168.0.250
Host Name = client.cmdschool.org
OS = RHEL 8.x x86_64
IP Address = 10.168.0.8
2.2 配置Rsync服务端
In rsyncd,
2.2.1 安装软件包
dnf install -y rsync-daemon
2.2.2 定义服务配置文件
vim /etc/rsyncd.conf
加入如下配置,
address = 0.0.0.0 port = 873 pid file = /var/run/rsyncd.pid uid = root gid = root hosts allow = 10.168.0.8 ignore errors = yes ignore nonreadable = yes log file = /var/log/rsyncd.log lock file = /var/run/rsyncd.lock transfer logging = yes numeric ids = no forward lookup = no reverse lookup = no use chroot = yes max connections = 4 timeout = 900 exclude = lost+found/ dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 [sftp] path = /data/sftp read only = no comment = sftp export area
2.2.3 修改服务启动脚本
vim /usr/lib/systemd/system/rsyncd.service
配置修改如下,
[Unit] Description=fast remote file copy program daemon ConditionPathExists=/etc/rsyncd.conf Wants=network-online.target After=network-online.target [Service] Environment=TZ='CST-8' EnvironmentFile=/etc/sysconfig/rsyncd ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS" [Install] WantedBy=multi-user.target
注:加粗部分配置可以解决输出的日志与系统时区不一致问题
2.2.4 启动服务并设置服务自启动
systemctl start rsyncd.service systemctl enable rsyncd.service systemctl status rsyncd.service
服务启动后,你可以使用如下命令查看服务的进程,
pgrep -u root rsync -a
可见如下显示,
7089 /usr/bin/rsync --daemon --no-detach
服务启动后,你可以使用如下命令查看服务的倾听,
ss -antp | grep rsync
可见如下显示,
LISTEN 0 5 0.0.0.0:873 0.0.0.0:* users:(("rsync",pid=7089,fd=4))
2.2.5 配置防火墙
firewall-cmd --permanent --add-service rsyncd firewall-cmd --reload firewall-cmd --list-all
2.3 测试Rsync服务端
In client,
rsync -avz /etc/redhat-release rsyncd.cmdschool.org::sftp/
参阅文档
====================
配置文件说明
—————-
https://download.samba.org/pub/rsync/rsyncd.conf.5
国内配置范例
——————-
https://www.cnblogs.com/lemon-le/p/8395438.html
没有评论