首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Linux 使用 rsync 同步資料到 Windows 遭遇「Connection refused」的排查清單

     編輯:程式設計疑難解答

錯誤現象

rsync -r --delete test/ 192.168.1.118:/cygdrive/d/test
# 結果:connect refused

核心原因

Connection refused 表示 TCP 連線被目標主機明確拒絕(發送 RST 封包),而非超時。 意味著:

  • 目標 IP 可達(路由通),但
  • 目標埠(預設 873/22)無程式監聽,或
  • 防火牆/TCP Wrappers 發送拒絕回應。

分級排查步驟

1. 確認網路通達性

ping 192.168.1.118
# 若不通 → 檢查 IP、子網路、虛擬網卡、VPN

2. 確認 Windows 端 rsync 服務運行狀態

Windows 通常透過 cwRsyncServer 或 Git for Windows / MSYS2 / Cygwin 提供 rsync daemon:

  • 服務管理器 → 搜尋 "RsyncServer" / "cwRsync" → 狀態應為「運行中」。
  • 或命令列:netstat -an | findstr :873 應顯示 `LISTENING`。
  • 若未安裝/未啟動 → 安裝 cwRsyncServer,設定 `rsyncd.conf`,啟動服務。

3. 若走 SSH 隧道(rsync -e ssh),確認 SSH 服務

  • Windows 10/11 可啟用「OpenSSH Server」選用功能,或安裝 Git for Windows 含 SSH Server。
  • netstat -an | findstr :22 確認 22 埠監聽。
  • 測試:ssh user@192.168.1.118 能否登入。

4. 防火牆規則(最常見遺漏)

5. rsyncd.conf 關鍵設定檢查

[test]
    path = /cygdrive/d/test
    read only = false
    list = yes
    auth users = rsyncuser
    secrets file = /etc/rsyncd.secrets
    hosts allow = 192.168.1.0/24
    hosts deny = *
  • hosts allow 必須包含客戶端 IP/網段。
  • path 路徑在 Cygwin 掛載點下正確(`/cygdrive/d/test`)。

6. 測試連線

# 測試 daemon 模式
rsync rsync://192.168.1.118/test

# 測試 SSH 模式
rsync -e ssh -avz test/ user@192.168.1.118:/cygdrive/d/test

替代方案建議

  • WinSCP / FileZilla (SFTP):圖形化、支援斷點續傳、腳本自動化。
  • Syncthing / Resilio Sync:P2P 即時同步,無需集中伺服器。
  • robocopy (Windows 原生):配合排程任務單向鏡像,`robocopy \\linux\share D:\test /MIR /R:2 /W:5`。

總結檢查清單

  1. ✅ IP 通(ping)
  2. ✅ 目標埠監聽(netstat -an | findstr :873 或 :22)
  3. ✅ 防火牆放行對應埠
  4. ✅ rsyncd.conf / sshd_config 允許客戶端 IP、認證正確
  5. ✅ 路徑在 Cygwin/WSL 掛載點下存在且可寫

逐項排查,多數情況在第 2、4 步解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
防火牆類型操作
Windows Defender 防火牆新增輸入規則:允許 TCP 873 (rsync) / 22 (SSH),配置檔:專用/網域
第三方殺毒/防火牆同樣放行對應埠,或暫時關閉測試
Cygwin/MSYS2 內部檢查 `/etc/hosts.allow` / `hosts.deny` (TCP Wrappers)