cygwin rsync 有效,但在使用 sshpass 时无效

问题描述

我正在使用安装了 openssh、openssl、sshpass 和 rsync 等的 cygwin。我已将 C:\cygwin64\home 添加到环境变量“path”中。当我运行命令 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 read:”之后什么也没有出现。此外,在此处显示此信息时,我将真实的远程用户名和 IP 地址替换为“用户”和“1.2.3.4”。真实密码包含从批处理脚本运行时需要转义的特殊字符。但是,我认为这不是问题,因为我没有收到错误的密码错误(如果我将 SSHPASS 设置为错误的密码,我会得到)

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

所以我的问题是,我需要做什么才能让 rsync 正常工作,而无需每次运行时都要求输入密码?我无法更改远程计算机的配置。

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

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)