![從第三台電腦啟動將檔案從一台伺服器傳輸到另一台伺服器](https://rvso.com/image/1567484/%E5%BE%9E%E7%AC%AC%E4%B8%89%E5%8F%B0%E9%9B%BB%E8%85%A6%E5%95%9F%E5%8B%95%E5%B0%87%E6%AA%94%E6%A1%88%E5%BE%9E%E4%B8%80%E5%8F%B0%E4%BC%BA%E6%9C%8D%E5%99%A8%E5%82%B3%E8%BC%B8%E5%88%B0%E5%8F%A6%E4%B8%80%E5%8F%B0%E4%BC%BA%E6%9C%8D%E5%99%A8.png)
我正在嘗試使用以下配置進行網站到網站的傳輸。我有一台舊伺服器(伺服器-A)、新伺服器(伺服器-B)和我的工作站(wks),我想在它們上啟動傳輸。
wks 和伺服器 A/B 之間已完成 SSH 金鑰交換。
伺服器 A 和伺服器 B 沒有交換金鑰。
我從我的工作站嘗試了以下命令
scp -r root@server-A:/path/to/source/ root@server-B:/destination/path
但它不起作用。據我了解,伺服器 A 嘗試連接到伺服器 B,並且由於沒有完成密鑰交換,因此失敗。
知道如何使檔案傳輸適用於此特定配置嗎?
答案1
使用伺服器 A 和伺服器 B 之間的直接連線傳輸檔案是首選方法。這就是scp
我們正在努力做的事情。的相關部分man 1 scp
:
-3
兩個遠端主機之間的副本是透過本地主機傳輸的。如果沒有此選項,資料將直接在兩個遠端主機之間複製。請注意,此選項會停用進度表。
你是對的,沒有-3
選項「伺服器 A 嘗試連接到伺服器 B」。我的測試表明,即使伺服器 B 允許基於密碼的身份驗證,與 tty 互動(在被詢問密碼時)很可能會出現問題。在這種情況下這則評論似乎有用:
ssh
進入伺服器 A,啟動scp
伺服器 A 上的(一個指令)。避免複製文件兩次。
在您明確ssh
進入伺服器 A 後,scp
在詢問伺服器 B 的密碼時,呼叫與 tty 互動應該沒有問題。或者,您可以ssh
進入 server-B 並scp
在那裡呼叫。
如果不可能(需要密鑰,不允許密碼),請scp -3
在您的工作站上使用。顯然,這將使用您的本地電腦作為一種代理,因此資料將在其網路連接上上下流動。
但並非所有scp
實作都支援-3
。