来自 Ubuntu 的文件已成功提交,但从 Windows 我收到错误“rsync 协议数据流错误(代码 12)”

来自 Ubuntu 的文件已成功提交,但从 Windows 我收到错误“rsync 协议数据流错误(代码 12)”

如果我很快通过 Rsync 从 Ubuntu PC 向 VPS 提交文件,一切顺利,但如果我从 Windows 执行同样的事情,我会收到错误

rsync:连接意外关闭(迄今为止已接收 0 个字节)

[接收器] rsync 错误:io.c(235) 处的 rsync 协议数据流 (代码 12) 错误 [接收器=3.1.3]

虽然与 Linux 不同,Rsync 不是 Windows 的默认安装,但我已在 Windows PC 上安装了 Rsync。

在此处输入图片描述

环境数据

  • 本地 PC#1:Windows 10
  • 本地 PC#2:Ubuntu 20.04.5
  • VPS:Ubuntu 20.04

准备工作

我已经用清晰的 Ubuntu 初始化了 VPS。为了从方程式中消除一些变量,我做了一些出于安全原因不应该在真实(不是我的情况中的实验性)VPS 上做的事情。

  • 我将使用 root 账户提交数据
  • 我不会使用 SLL

此外,我还创建了/var/www/example.com目录,以避免因尚未创建目标目录而无法同步数据的错误。

目标

在此处输入图片描述

提交内容06-生产构建目录到 VPS。

实验流程

在 Windows 终端上,输入

rsync -azve ssh --progress 06-ProductionBuild [email protected]:/var/www/example.com

已请求密码。输入密码后得到:

rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.3]

在此处输入图片描述

如果我只是输入了错误的密码,则错误是Permission denied, please try again

现在从 Ubuntu PC 执行相同的命令:

在此处输入图片描述

一切都很好。

请给我一些提示。


从 WSL 尝试过 - 没问题。看起来有问题从 Windows 进行 Rsync

在此处输入图片描述

答案1

ssh显然,这是因为当您仅指定时,您将使用“系统”程序(Microsoft 的 OpenSSH 本机版本) -e ssh。 (更准确地说,这可能是因为 (cw)rsync 安装目录的 PATH 优先级bin低于所关注的其他路径)。

在我的测试中,最简单的解决方法是指定-e /bin/ssh,这将利用随附的rsync(cygwin) 。(cygwin“魔法”应该会自动为您解析路径的根,无论是否是巧克力色。)ssh

(发现原因的)功劳归于评论这里,尽管那里提供的方法似乎不必要地笨拙。(好吧,除非你有理由使用ssh微软的版本。)

编辑:实际上,链接中给出的正确解释对我来说似乎并不完全正确。在我的测试中,“系统” ssh 确实会known_hosts在不同的位置使用,但当我第一次尝试连接它并成功创建自己的服务器时,它也会提示我将服务器添加到列表中known_hosts。它在后来的尝试中也没有问我,所以显然它可以找到自己的服务器来读回。因此,我不知道他的建议对他有什么帮助,而且指定选项/路径对我来说无论如何都不起作用。

相关内容