Linux

ssh/scp 有效,但 rsync 只是不斷地說“不”

  • November 2, 2018

您好我有一個 Windows 2003 伺服器,我需要備份到linux客戶端,所以我安裝cygwinWin2k3. 在Win2k3我已啟用sshscp但是(因為Win2k3伺服器使用自定義的 Windows SFTP 伺服器在埠 22 上偵聽)我必須設置scp/ssh才能port 222在 cygwin 上執行。它工作正常。只要我使用 ssh/scp 並在命令行中使用 -p/-P 開關。

SSH Public/Private Key Pair我通過 ssh/scp 為我的使用者建立了一個從linux clientWin2k3 server.

然後我在 Win2k3 上啟動 rsyncd 並在 中添加使用者/etc/rsyncd.conf,創建/etc/rsyncd.secrets並分配特權,看起來不錯。

然後,當我嘗試通過 ssh 進行 rsync 連接 /not/ 時,它可以工作,但我想 /only/ 通過 ssh 進行連接,當我這樣做時,它每次都會失敗,並出現 0 個字節。我嘗試了多個使用者並重寫了 rsyncd.conf 一百萬次,但它不斷失敗。我開始認為我需要從客戶端的角度告訴 rsync 客戶端 ssh 埠是 222。如果是這樣,我該怎麼做?

是的,您當然必須:

rsync -e 'ssh -p 222' ...

或者:

RSYNC_RSH='ssh -p 222' rsync ...

或者,您可以指定與~/.ssh/configssh主機的連接預設在埠 222 上:

Host that-host
Port 222

一個很晚的答案,但可以幫助其他人……

rsync以兩種模式之一執行。

  1. 您可以在 之間執行它ssh,本地rsync程序將在遠端系統上啟動一個rsync程序作為其伺服器,並ssh提供兩個系​​統之間的加密傳輸。此模式由遠端主機和遠端路徑之間的單個冒號表示:
rsync /path/to/local/ remote:/path/to/remote
  1. 您可以將其作為守護程序執行,本地rsync程序將直接連接到已經執行的伺服器rsync程序。ssh此方案不提供加密(或)。此模式由遠端主機和遠端路徑之間的雙冒號表示:
rsync /path/to/local remote::/path/to/remote

您不需要安裝伺服器ssh守護rsync程序。一個或另一個就足夠了。

對於安全的 LAN,或者文件內容是公開的,rsync守護程序可能更適合,因為它不需要使用者能夠登錄到遠端系統。該ssh方法更適合不安全或不受信任的網路(即 Internet),但它確實需要非常仔細的設置或使用者能夠登錄到遠端系統的能力。

在您的情況下,您希望能夠僅通過 進行連接,因此配置或執行守護程序ssh是沒有意義的。rsync

引用自:https://unix.stackexchange.com/questions/75447