如何使用 rsync 與遠端主機

如何使用 rsync 與遠端主機

我是一個快樂的用戶,rsync -e ssh並使用它來同步我的機器和遠端主機之間的數據

rsync -avz -e ssh me@hostA:~/folder ~/folder

這滿足了我到目前為止所需要的。

我現在正在使用訪問稍微複雜一些的配置。假設 now~/folder已打開hostB,但hostB不能從我的機器直接訪問,而只能透過 間接訪問hostA

因此,如果我只想查看hostB.我首先需要 ssh 到hostA,然後才能在遠端主機上hostB看到我的檔案。~/folder

rsync我現在的問題是,在我的機器和 之間直接使用的(最佳)方法是什麼hostB

不幸的是,這是我需要使用的配置。假設不可能暫時儲存資料hostA本身。

答案1

看一下如何使用 ssh 透過另一台電腦連接到另一台電腦

您建立一個~/.ssh/config名為tunnelb的新條目:

Host tunnelb
HostName hostB
User user
ProxyCommand ssh user@hostA nc %h %p

如果您有最新版本的 ssh,Proxycommand ssh user@hostA -W %h:%p則可以使用它。這是首選,因為它不依賴nc

現在您可以直接使用,rsync -e ssh tunnelb:~/folder ~/folder因為它將使用 中定義的條目~/.ssh/config

答案2

變體 1:

首先,在 hostA 上永久啟動 ssh,並在另一個終端機中進行本機連接埠轉送。例如:

ssh -N -v -L 22022:hostB:22 hostA

然後,使用 ssh 將 rsync「饋送」至localhost:22022.一種變體是寫入 ~/.ssh/config:

Host hostB
HostName localhost
Port 22022

變體 2:

替換-e ssh-e某個包含以下內容的腳本:

ssh hostA 'ssh hostB' "$@"

我沒有嘗試過,所以一些細節將另外詳細說明。

相關內容