Nginx rsync密码文件的实战攻略

 更新时间:2026年07月02日 09:35:57   作者:難釋懷  
本文详细介绍了rsync Daemon模式下的密码文件配置方法,包括服务端SecretsFile和客户端PasswordFile的配置步骤,强调了文件权限设置的重要性,并并对比了rsyncDaemon模式与SSH模式的在安全性、配置复杂度和适用场景上的差异,感兴趣的朋友一起看看吧

一、引言:自动化同步的“最后一公里”

在 Nginx 运维中,我们常使用 rsync 来同步静态资源或配置文件。为了实现完全自动化(例如,在 CI/CD 流水线或定时任务中),我们必须解决一个问题:如何让 rsync 在无人值守的情况下自动提供密码

手动输入密码显然行不通。rsync 提供了两种主要的免密方案:

  1. SSH 模式:通过配置 SSH 公钥认证。
  2. Daemon 模式:通过配置 rsync 守护进程和专用的密码文件

本文将聚焦于第二种方案——密码文件(Password File)的配置与使用。虽然 SSH 模式更常见,但在某些内部网络或特定架构下,rsync Daemon 模式因其轻量和高效而被采用,此时密码文件就是关键。

二、核心概念:两种密码文件

在 rsync Daemon 模式下,存在两种密码文件,分别位于服务端客户端,作用截然不同。

1. 服务端密码文件(Secrets File)

  • 位置:在运行 rsync 守护进程的服务器上。
  • 作用:存储用户名和密码的映射关系,用于验证连接进来的客户端。
  • 格式:纯文本,每行一个 username:password 对。
# /etc/rsyncd.secrets
nginx_sync:MySecurePass123!
backup_user:AnotherPass456@

2. 客户端密码文件(Password File)

  • 位置:在发起 rsync 同步命令的客户端机器上。
  • 作用仅包含密码。当客户端连接服务端时,通过 --password-file 参数指定此文件,自动读取密码进行认证。
  • 格式:纯文本,只有一行,即密码本身
# ~/rsync.pass
MySecurePass123!

✅ 重要区别:服务端文件是 用户:密码,客户端文件只有密码

三、实战:从零配置 rsync 密码认证

假设我们有两台服务器:

  • 服务端 (192.168.1.100):存放 Nginx 配置的中央仓库。
  • 客户端 (192.168.1.101):需要从服务端拉取最新配置的 Nginx Web 服务器。

Step 1: 在服务端配置 rsync 守护进程

创建服务端密码文件

sudo vim /etc/rsyncd.secrets

内容如下:

nginx_sync:MySecurePass123!

设置严格的文件权限
这是安全的关键!密码文件必须仅对 root 可读。

sudo chmod 600 /etc/rsyncd.secrets
sudo chown root:root /etc/rsyncd.secrets

编辑主配置文件 /etc/rsyncd.conf

# 全局设置
uid = nobody
gid = nobody
use chroot = yes
read only = no
hosts allow = 192.168.1.0/24
hosts deny = *
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
# 定义一个名为 'nginx_conf' 的模块
[nginx_conf]
    path = /data/nginx_configs
    comment = Nginx Configuration Repository
    auth users = nginx_sync               # 指定允许访问的用户
    secrets file = /etc/rsyncd.secrets    # 指向服务端密码文件

启动 rsync 服务

# CentOS/RHEL
sudo systemctl start rsyncd
sudo systemctl enable rsyncd
# Ubuntu/Debian (可能需要先安装)
sudo systemctl start rsync
sudo systemctl enable rsync

Step 2: 在客户端配置密码文件并测试

创建客户端密码文件
在客户端(192.168.1.101)上操作:

vim ~/rsync.pass

内容只有一行

MySecurePass123!

同样设置严格的文件权限

chmod 600 ~/rsync.pass

执行同步命令

# 从服务端拉取 nginx_conf 模块的内容到本地 /tmp 目录
rsync -av \
    --password-file=~/rsync.pass \
    rsync://nginx_sync@192.168.1.100/nginx_conf/ \
    /tmp/nginx_configs/

--password-file:指定客户端密码文件。

rsync://user@host/module/rsync Daemon 模式的标准 URI 格式。

如果命令成功执行且没有提示输入密码,说明配置完全正确!

四、关键安全注意事项

  • 文件权限至关重要
    • 服务端 (/etc/rsyncd.secrets) 和客户端 (~/rsync.pass) 的密码文件权限都必须是 600
    • 如果权限过于宽松(如 644),rsync 出于安全考虑会拒绝使用该文件,并报错。
  • 避免在命令行中明文暴露密码
    • 绝对不要使用 --password='your_password' 这样的方式,因为密码会记录在 shell 历史中,极易泄露。
  • 网络隔离
    • rsync Daemon 默认监听 TCP 873 端口。务必通过防火墙hosts allow),仅允许可信的客户端 IP 访问。
  • 使用强密码
    • 为 rsync 用户设置足够复杂且唯一的密码。

五、与 SSH 模式的对比

特性rsync Daemon + 密码文件rsync over SSH
安全性依赖密码强度和网络隔离基于 SSH 密钥,安全性极高
配置复杂度需要配置守护进程和两个密码文件只需配置 SSH 公钥
性能略高(无 SSH 加解密开销)略低(有加解密开销)
适用场景内部高速、可信网络所有场景,尤其是跨公网

📌 建议:除非有明确的性能要求或特殊架构限制,优先选择 rsync over SSH 模式,它更简单、更安全。

六、结语

到此这篇关于Nginx rsync密码文件的实战攻略的文章就介绍到这了,更多相关Nginx rsync密码文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx配置安装免费证书的方法步骤

    nginx配置安装免费证书的方法步骤

    HTTPS可以有效的防止数据被窃听和篡改,本文主要介绍了nginx配置安装免费证书的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 基于Nginx实现限制某IP短时间访问次数

    基于Nginx实现限制某IP短时间访问次数

    这篇文章主要介绍了基于Nginx实现限制某IP短时间访问次数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 关于nginx没有跳转到upstream地址的解决

    关于nginx没有跳转到upstream地址的解决

    这篇文章主要介绍了关于nginx没有跳转到upstream地址的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 图文详解nginx日志切割的实现

    图文详解nginx日志切割的实现

    这篇文章主要给大家介绍了关于nginx日志切割实现的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • nginx的重定向(rewrite)问题及解读

    nginx的重定向(rewrite)问题及解读

    文章主要介绍了Nginx中的location匹配、优先级及其与rewrite的区别,详细解释了location和rewrite的使用场景、语法、优先级、标志位和执行顺序等内容,并通过示例展示了基于域名和IP地址进行跳转的方法
    2026-05-05
  • 详解Nginx http资源请求限制(三种方法)

    详解Nginx http资源请求限制(三种方法)

    这篇文章主要介绍了Nginx http资源请求限制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • nginx配置gzip压缩页面

    nginx配置gzip压缩页面

    gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多,下面看一下Nginx配置Gzip的方法
    2013-12-12
  • https如何通过nginx完成双向认证转发

    https如何通过nginx完成双向认证转发

    文章详细介绍了HTTPS单向认证和双向认证的概念,并提供了生成自签证书、配置Nginx进行双向认证的具体步骤,通过双向认证,服务端和客户端可以互相验证身份,提升安全性,在测试过程中,使用浏览器访问HTTPS接口时,需要安装客户端证书才能成功获取数据
    2024-11-11
  • 如何使用nginx代理ws或是wss的请求

    如何使用nginx代理ws或是wss的请求

    这篇文章主要为大家详细介绍了如何使用nginx代理ws或是wss的请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • Nginx制作下载站点的方法步骤

    Nginx制作下载站点的方法步骤

    本文主要介绍了Nginx制作下载站点的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10

最新评论