首页 > 解决方案 > cygwin rsync 有效,但在使用 sshpass 时无效

问题描述

我正在使用安装了 openssh、openssl、sshpass 和 rsync 等的 cygwin。我已将 C:\cygwin64\home 添加到环境变量“路径”中。当我运行命令rsync -avP user@1.2.3.4:/remote/path/ .\relative\local\path时,它可以工作。但是,如果我使用 sshpass,如下所示:

set SSHPASS=password
sshpass -e -v rsync -avP user@1.2.3.4:/remote/path/ .\relative\local\path

这不起作用。文件未传输,输出为:

SSHPASS searching for password prompt using match "assword"
user@1.2.3.4's password:
SSHPASS detected prompt. Sending password.
SSHPASS read:

“SSHPASS 读取:”之后什么都没有出现。此外,在此处显示此信息时,我将真实的远程用户名和 IP 地址替换为“用户”和“1.2.3.4”。真实密码包含从批处理脚本运行时需要转义的特殊字符。但是,我认为这不是问题,因为我没有收到错误的密码错误(如果我将 SSHPASS 设置为错误的密码,我可以得到)

本地计算机在 Windows 10 上,而远程计算机在 Ubuntu 上。我通常通过腻子连接到它。

所以我的问题是,我必须怎么做才能让 rsync 在每次运行时都不需要密码的情况下工作?我无法更改远程计算机的配置。

这可能是不相关的,但是该rsync命令仅在本地路径是相对路径时才有效,否则我们会收到错误消息,指出它们不能都是远程的。这是关于 stachoverflow 的答案。

此外, rsync 拒绝将主机添加到已知主机列表中,直到我编辑文件nsswitch.conf以包含db_home: windows.

标签: cygwinrsyncopensshsshpass

解决方案


推荐阅读