防止 rsync 尝试询问密码

Prevent rsync from trying to ask for a password

如何防止 rsync 尝试询问远程服务器登录密码?

注意:我不是在询问如何设置 public 密钥验证 SSH。我 知道 如何设置 public 密钥验证 SSH。我想问的是如何防止 rsync 在 public 密钥验证 失败 时尝试询问密码,就像 scp-B flag 确实如此。我在这里的脚本中使用 rsync,所以如果它试图询问密码,我的脚本将挂起,等待永远不会到来的输入。我希望 rsync 命令失败,这样我的脚本就可以检测到失败并正常退出。

只需将选项传递给 rsync 使用的基础 ssh 命令:

rsync -e 'ssh -oBatchMode=yes [other ssh options]' [rest of rsync command]

来自 rsync 手册:

-e, --rsh=COMMAND           specify the remote shell to use

来自 ssh 手册:

BatchMode

If set to “yes”, passphrase/password querying will be disabled.
This option is useful in scripts and other batch jobs where no
user is present to supply the password.  The argument must be
“yes” or “no”.  The default is “no”.

这模拟了行为 os scp -B