Файлы из Ubuntu были успешно отправлены, но из Windows я получил ошибку «Ошибка в потоке данных протокола rsync (код 12)»

Файлы из Ubuntu были успешно отправлены, но из Windows я получил ошибку «Ошибка в потоке данных протокола rsync (код 12)»

Если вкратце, когда я отправляю свои файлы на VPS с ПК Ubuntu через Rsync, все идет хорошо, однако если я делаю то же самое из Windows, я получаю ошибку

rsync: соединение неожиданно закрыто (пока получено 0 байт)

[Receiver] Ошибка rsync: ошибка в потоке данных протокола rsync (код 12) в io.c(235) [Receiver=3.1.3]

Хотя в отличие от Linux Rsync не установлен по умолчанию в Windows, я установил Rsync на свой ПК с Windows.

введите описание изображения здесь

Данные об окружающей среде

  • Локальный ПК №1: Windows 10
  • Локальный ПК №2: Ubuntu 20.04.5
  • VPS: Ubuntu 20.04

Препараты

Я инициализировал VPS с чистой Ubuntu. Чтобы исключить некоторые переменные из уравнений, я сделал некоторые вещи, которые не следует делать на реальном (не экспериментальном, как в моем случае) VPS из-за безопасности.

  • Я отправлю данные, используя учетную запись root.
  • Я не буду использовать SLL

Также я создал/var/www/example.comкаталог на VPS, чтобы избежать ошибки о невозможности синхронизировать данные, поскольку целевой каталог не был создан.

Цель

введите описание изображения здесь

Отправить содержание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 - все нормально. Похоже, что-то не так сRsync из Windows.

введите описание изображения здесь

решение1

По-видимому, это происходит потому, что вы используете «системную» sshпрограмму (собственную сборку OpenSSH от Microsoft), когда указываете просто -e ssh. (Точнее, это, вероятно, потому, что приоритет PATH каталога binустановки (cw)rsync ниже, чем у другого рассматриваемого пути).

В моем тесте самым простым решением было указать -e /bin/sshвместо этого , что заставит rsyncиспользовать (cygwin) ssh, который идет в комплекте. («Магия» cygwin должна автоматически определить корень пути для вас, шоколадный вы или нет.)

Заслуга (в обнаружении причины) принадлежит комментариюздесь, хотя предлагаемый там подход кажется излишне неуклюжим. (Ну, если только у вас нет причин использовать сборку sshот Microsoft.)

EDIT: на самом деле объяснение, данное в ссылке, не кажется мне совсем верным. В моем тесте "системный" ssh действительно использовал бы known_hostsдругое место, но он предлагает мне добавить сервер в список, когда я пытаюсь подключиться к нему в первый раз и known_hostsуспешно создал свой собственный. Он также не спрашивал меня при более поздней попытке, так что, по-видимому, он МОЖЕТ найти свой собственный, чтобы прочитать обратно. Поэтому я понятия не имею, как его предложение помогло ему, и указание опции/пути в любом случае не работает для меня.

Связанный контент