Windows:rsync 在 msys 中工作,但在 cygwin 中不工作(git bash)

Jan*_*nga 5 ssh rsync cygwin msys git-bash

我正在从 Windows 10 盒子连接到 Linux 系统。我并行使用 msys 和 git bash。我想使用 rsync 同步 Linux 机器上的文件。目前它可以在 msys 中运行,但不能在 git bash 中运行。

我希望它能在 git bash 中工作,因为并行使用两者很尴尬。我选择 git bash 而不是 msys,因为我的团队无论如何都需要 git。我的团队成员也应该使用我正在编写的脚本,他们不知道 msys,但知道 git bash。

我正在使用的命令是

rsync -iru -e ssh $(ls -d [^O]*) "advanced@$ip:/home/user/"
Run Code Online (Sandbox Code Playgroud)

在 msys 中这是有效的。在 git bash 中我收到错误消息。

dup() in/out/err failed
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at /usr/src/rsync/rsync-3.0.8/io.c(760) [sender=3.0.8]
Run Code Online (Sandbox Code Playgroud)

(本地 rsync 版本是 3.0.8,msys 和 git bash 使用相同的二进制文件。)

我知道 msys 和 git bash 使用不同的 ssh 二进制文件。虽然差异显示它们是相同的,但我在 git bash 中尝试过

rsync -ru -e '/c/MinGW/msys/1.0/bin/ssh.exe' $(ls -d [^O]*) "advanced@$ip:/home/user/"
Run Code Online (Sandbox Code Playgroud)

仍然失败。

看起来 ssh 使用了一些隐藏设置,这在 msys 和 git bash 使用不同的主目录(分别是专用的主目录和我的 Windows 用户目录)的情况下是合理的。但是,它们各自的 .ssh 目录仅包含常见的嫌疑对象(id_rsa、id_rsa.pub、known_hosts),并且不包含可能包含任何设置的文件。

编辑:

以下是/var/log/auth.log 的内容。...211 是 Linux 机器,...2 Windows 机器。

成功(与 mingw 一起):

sshd[25494]: Accepted publickey for advanced from 192.168.47.2 port 32589 ssh2: RSA SHA256:ofWD8Ii5DnGUyK2wUDpl71KhQcRajEqBWv6n27YwQ8g
sshd[25494]: pam_keyinit(sshd:session): Unable to look up user "advanced"
sshd[25494]: pam_unix(sshd:session): session opened for user advanced by (uid=0)
sshd[25500]: Received disconnect from 192.168.47.2: 11: disconnected by user
sshd[25494]: pam_unix(sshd:session): session closed for user advanced
sshd[25500]: Disconnected from 192.168.47.2
Run Code Online (Sandbox Code Playgroud)

不成功(使用 git bash)

sshd[24626]: Accepted publickey for advanced from 192.168.47.2 port 32488 ssh2: RSA SHA256:ofWD8Ii5DnGUyK2wUDpl71KhQcRajEqBWv6n27YwQ8g
sshd[24626]: pam_keyinit(sshd:session): Unable to look up user "advanced"
sshd[24626]: pam_unix(sshd:session): session opened for user advanced by (uid=0)
sshd[24626]: pam_unix(sshd:session): session closed for user advanced
Run Code Online (Sandbox Code Playgroud)

我不知道“无法查找用户”是什么意思。当我以高级方式 ssh 时,日志中会出现同一行,但我得到了“高级”身份验证 - 没有 root 权限,如“(uid=0)”似乎所示。