rsync密码文件免密同步的核心是绕过交互式密码输入,专用于rsync守护进程模式(rsyncd):服务端配置secrets file并设600权限,客户端用--password-file指定纯密码文件,命令如rsync -av --password-file=/etc/rsync_client.pwd user@server::module /local/dest/。

Linux 中配置 rsync 密码文件实现免密同步,核心是**绕过交互式密码输入**,让 rsync 客户端在连接 rsync 服务端(非 SSH)时自动认证。注意:这不是 SSH 免密登录,而是针对 rsync 守护进程模式(rsyncd) 的专用密码机制。
一、确认使用的是 rsync 守护进程模式
只有当 rsync 以独立服务(daemon)方式运行,且配置了 auth users 和 secrets file 时,才需要密码文件。常见标志:
- 服务端配置了
/etc/rsyncd.conf - 启动了
rsync --daemon进程(如通过 systemd 或直接运行) - 客户端命令中使用双冒号
::,例如:rsync -av user@host::module /local/path
二、服务端准备密码文件
在服务端(接收方)操作:
- 创建密码文件,如
/etc/rsync.password(路径需与rsyncd.conf中secrets file = /etc/rsync.password一致) - 格式为:
用户名:密码(一行一个用户),例如:rsync_backup:MyPass123 - 严格设置权限:
chmod 600 /etc/rsync.password(必须,否则 rsync 拒绝读取) - 确保该文件所有者为启动 rsyncd 的用户(通常是 root 或 rsync)
三、客户端配置本地密码文件
在客户端(发起方)操作:
- 创建一个仅含密码的纯文本文件,如
/etc/rsync_client.pwd - 内容只写密码本身(不能带用户名,不能有空格或换行符),例如:
MyPass123 - 同样设为私有:
chmod 600 /etc/rsync_client.pwd
四、执行免密同步命令
使用 --password-file 参数指定客户端密码文件:
rsync -av --password-file=/etc/rsync_client.pwd user@server::module /local/dest/
其中:
-
user是rsyncd.conf中auth users列出的用户名(如rsync_backup) -
server是服务端主机名或 IP -
module是rsyncd.conf中定义的模块名(如[backup])
五、验证与注意事项
若报错 @ERROR: auth failed on module xxx,请检查:
- 服务端
secrets file路径是否正确、权限是否为 600 - 客户端密码文件内容是否纯密码、无多余字符、权限是否为 600
- 服务端
rsyncd是否已重启(systemctl restart rsyncd或killall rsync && rsync --daemon) - 防火墙是否放行 rsync 默认端口 873(
firewall-cmd --add-port=873/tcp --permanent)











