欢迎光临韵绾网
详情描述

rsync 使用 --password-file 仍需要手动输入密码的问题通常由以下几个原因导致:

1. 文件权限问题

密码文件的权限必须设置为 600(仅所有者可读写):

chmod 600 /path/to/password-file

2. 密码文件格式

密码文件应该 只包含密码,没有用户名、空格或换行符(除非必要):

yourpassword

或者如果是 Samba 共享:

username = yourusername
password = yourpassword
domain = yourdomain

3. 使用方式错误

对于 rsync daemon 模式(使用 ::):

rsync -av --password-file=/path/to/password-file user@host::module/source/ dest/

对于 SSH 模式(使用 :):

--password-file 无效,应使用 SSH 密钥或 sshpass:

# 方法1:使用SSH密钥(推荐)
rsync -av -e ssh source/ user@host:dest/

# 方法2:使用sshpass(不安全)
sshpass -p 'password' rsync -av source/ user@host:dest/

4. 正确的完整示例

# 1. 创建密码文件
echo "yourpassword" > /tmp/rsync.password
chmod 600 /tmp/rsync.password

# 2. 执行rsync(daemon模式)
rsync -av --password-file=/tmp/rsync.password \
    user@host::module/source/ /local/dest/

# 3. 清理(可选)
rm -f /tmp/rsync.password

5. 检查rsync服务端配置

确保服务端 /etc/rsyncd.conf 中设置了:

secrets file = /etc/rsyncd.secrets
auth users = username

6. 调试方法

添加 -vvv 参数查看详细输出:

rsync -avvv --password-file=/path/to/file user@host::module/source/ dest/

7. 替代方案:使用环境变量

export RSYNC_PASSWORD="yourpassword"
rsync -av user@host::module/source/ dest/

常见错误排查清单:

  • [ ] 确认是 rsync daemon 模式(双冒号 ::
  • [ ] 密码文件权限为 600
  • [ ] 密码文件内容无多余字符
  • [ ] 服务端配置正确
  • [ ] 用户名在服务端的授权列表中

如果是 SSH 连接,请改用 SSH 密钥认证,这是更安全的方式。

相关帖子