如何讓 OpenSSH for Windows 也能支援 Rsync 遠端加密連線傳輸
source link: https://blog.miniasp.com/post/2021/12/15/How-to-use-Rsync-with-OpenSSH-for-Windows
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
傳送大量檔案到遠端 Windows 電腦時,除了使用 SFTP 之外,其實也可以使用 Linux 知名的 rsync
命令來快速傳檔,不但傳輸過程可以透過 OpenSSH 加密,傳輸內容甚至於可以壓縮與進行差異比對。不過 Windows 要使用 Rsync 來傳檔真的比我想像中的難很多,我花了大量的時間搜尋解決方案無果,沒有一篇文章能用的,最後嘗試各種組合才被我找出一定能成功使用的方法。這篇文章看起來不長,但還真的花了不少時間研究,就馬上來看看 Windows 如何使用 Rsync 搭配 OpenSSH 來傳檔吧!
設定 Windows 伺服器端
基本上你只要設定好 OpenSSH Server 之後,就只要加裝 Rsync 工具即可,這裡我們會以 cwRsync 為主。
-
下載與安裝 cwRsync 最新版
# 安裝 rsync 工具 choco install rsync -y
-
重新啟動
sshd
服務Restart-Service sshd
設定 Windows 用戶端
這次我們因為需要使用到 cwRsync 內附的 ssh.exe
程式,但是 cwRsync 的 Chocolatey 套件只包含 rsync.exe
而已,所以我們用戶端不能用 Chocolatey 進行安裝。
-
下載與安裝 cwRsync 最新版
# 下載最新版 cwRsync Invoke-WebRequest -Uri https://itefix.net/dl/free-software/cwrsync_6.2.4_x64_free.zip -OutFile cwrsync_6.2.4_x64_free.zip # 先解壓縮到暫存資料夾 Expand-Archive -LiteralPath "$PWD\cwrsync_6.2.4_x64_free.zip" -DestinationPath "$env:TEMP\cwrsync" # 將 cwrsync_6.2.4_x64_free 目錄下所有檔案複製到 C:\cwrsync mkdir "C:\cwrsync" Copy-Item -Path "$env:TEMP\cwrsync\cwrsync_6.2.4_x64_free\*" -Destination "C:\cwrsync" -Recurse # 刪除壓縮檔 del "$PWD\cwrsync_6.2.4_x64_free.zip"
-
設定系統層級的
PATH
環境變數加入C:\cwrsync\bin
路徑# 下載設定環境變數的利器 SetEnv Invoke-WebRequest -Uri "https://github.com/doggy8088/SetEnv/releases/download/1.0/SetEnv.exe" -OutFile "SetEnv.exe" # 增加 PATH 系統環境變數 .\setenv -a PATH %C:\cwrsync\bin # 刪除 SetEnv.exe del SetEnv.exe
-
使用
rsync
搭配 cwRsync 內附的ssh.exe
來進行加密連線rsync -e 'c:\cwrsync\bin\ssh.exe -i mysshkey' -avzr 'myfile' [email protected]:.
我目前不太能理解為什麼不能用 Win32-OpenSSH 提供的
ssh.exe
來進行連線,但我嘗試了很多種不同的ssh.exe
,包含 Cygwin 的ssh.exe
也不行,就只有 cwRsync 的ssh.exe
可以用。我有建立一個 Issue #1869 來追蹤這個問題。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK