すぐに、Ubuntu PCからRsyncを使用してVPSにファイルを送信すると、すべてうまくいきますが、Windowsから同じことを行うと、エラーが発生します。
rsync: 接続が予期せず閉じられました (これまでに 0 バイト受信)
[受信者] rsync エラー: io.c(235) の rsync プロトコル データ ストリーム (コード 12) でエラーが発生しました [受信者 = 3.1.3]
Linux とは異なり、Windows では Rsync はデフォルトでインストールされていませんが、私は Windows PC に Rsync をインストールしました。
環境データ
- ローカル PC#1: Windows 10
- ローカル PC#2: Ubuntu 20.04.5
- VPS: Ubuntu 20.04
準備
私はクリアな Ubuntu で VPS を初期化しました。方程式からいくつかの変数を削除するために、セキュリティ上の理由から実際の (私の場合のように実験的なものではない) VPS では実行すべきではないいくつかの操作を実行しました。
- ルートアカウントを使用してデータを送信します
- 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から試してみましたが、問題ありませんでした。Windows からの Rsync。
答え1
ssh
どうやら、だけを指定すると、「システム」プログラム (Microsoft の OpenSSH のネイティブ ビルド)が使用されるためと思われます。(より正確には、 (cw)rsync インストール ディレクトリの PATH 優先順位が、関係する他のパスよりも低いため-e ssh
と思われます)。bin
私のテストでは、最も簡単な回避策は-e /bin/ssh
代わりに指定することです。これにより、付属のrsync
(cygwin) が使用されますssh
。(cygwin の「マジック」により、chocolatey かどうかに関係なく、パスのルートが自動的に解決されるはずです。)
(原因を発見した)功績はコメントにあるここただし、そこで提案されているアプローチは不必要に不器用なようです。(まあ、ssh
Microsoft のビルドを使用する理由がない限りは)
編集: 実際、リンクされた正しい説明は、私には正確には当てはまらないようです。私のテストでは、ssh が使用する「システム」は確かにknown_hosts
別の場所にありますが、初めて接続しようとしたときに、サーバーをリストに追加するように求められ、サーバーがknown_hosts
正常に作成されました。その後の試行でも尋ねられなかったので、どうやら独自のサーバーを見つけて読み戻すことができるようです。したがって、彼の提案がどのように役立ったのかはわかりませんし、オプション/パスを指定しても私には機能しません。