Linux

使用 scp 將文件複製到不同的伺服器

  • July 3, 2018

我幾乎每天都必須將文件複製到不同的伺服器。我通常做的是:

scp filename user@destinationhost:/destination/folder

我執行相同的命令一遍又一遍地更改目標主機,直到完成所有伺服器。將相同文件傳輸到這些不同伺服器的最佳(和最快)方法是什麼?

另一個缺點是我需要一遍又一遍地輸入密碼,但使用 rsa 不是一種選擇,因為可以有幾個人連接到源伺服器。

編輯 - 我在commandlinefu中發現循環可能會起到作用:

for h in host1 host2 host3 host4 ; { scp file user@$h:/destination_path/ ; }

有各種工具可以將文件 scp 到多個主機(同時連接),例如psshkanif。在密碼方面,我建議使用代理轉發。這允許您將密鑰保留在本地電腦上,但在從另一台主機啟動 SSH 連接時使用它。否則,來自pssh的命令--askpass選項會提示輸入用於每個主機的密碼。parallel-scp

如果您無法安裝工具來執行此操作,請設置代理轉發(通過在連接到您正在執行此操作的機器時添加-A選項ssh)然後scp在循環中執行,如下所示:

for HOST in server1 server2 server3; do
   scp somefile $HOST:~/somedir/
done

引用自:https://serverfault.com/questions/389404