我想在 python 脚本中使用 rsync。我使用subprocess
模块调用它,并使用存储在authorized_key
远程机器上的文件中的公钥进行身份验证。
唯一的问题是,当我使用错误的远程用户名使用 rsync 时,会提示我输入密码,这显然会永远停止备份脚本。
rsync
如果无法进行身份验证,我是否可以强制退出并显示错误,而不是提示输入密码?
乌迪
假设您将 rsync 与 SSH 远程 shell 一起使用(而不是 - 例如 - 与 rsync 服务器一起使用),那么您可以让 rsync 以永远不会要求密码的方式运行 SSH。例如,一旦可以使用这个调用:
rsync -e 'ssh -o "NumberOfPasswordPrompts 0"' source user@target:/path
Run Code Online (Sandbox Code Playgroud)
这将强制 rsync 在 0 次可能的密码尝试中使用 SSH - 如果它无法使用其他身份验证方法(如公钥或 GSSAPI)获得访问权限,那么它将失败并出现错误。请注意,当发生这种情况时 rsync 不会喜欢你,并且会大声向 STDERR 抱怨并以退出代码 255 中断。
以下是我用来保持安静的 ssh 命令行选项。
ssh -o stricthostkeychecking=no -o userknownhostsfile=/dev/null -o batchmode=yes -o passwordauthentication=no
如果您不维护 known_hosts 文件并且担心收到 MitM 警告,则只需要主机密钥。我没有按照 James F 的建议指定身份验证类型,而是必须明确限制密码身份验证。不过,我使用它来攻击数百个具有几个不同操作系统版本的主机,因此它可能只是不兼容。
归档时间: |
|
查看次数: |
8344 次 |
最近记录: |