rsync 使用 --password-file 仍需要手动输入密码的问题通常由以下几个原因导致:
密码文件的权限必须设置为 600(仅所有者可读写):
chmod 600 /path/to/password-file
密码文件应该 只包含密码,没有用户名、空格或换行符(除非必要):
yourpassword
或者如果是 Samba 共享:
username = yourusername
password = yourpassword
domain = yourdomain
::):rsync -av --password-file=/path/to/password-file user@host::module/source/ dest/
:):--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/
# 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
确保服务端 /etc/rsyncd.conf 中设置了:
secrets file = /etc/rsyncd.secrets
auth users = username
添加 -vvv 参数查看详细输出:
rsync -avvv --password-file=/path/to/file user@host::module/source/ dest/
export RSYNC_PASSWORD="yourpassword"
rsync -av user@host::module/source/ dest/
::)如果是 SSH 连接,请改用 SSH 密钥认证,这是更安全的方式。