Scp

如何通過兩個中間伺服器 scp 到第三跳伺服器

  • December 3, 2016

我已經看到很多scp通過中間伺服器通過ProxyCommand操作員到第二跳伺服器的範例,例如:

A:/infile.txt -> B -> C:/outfile.txt

從 A 中看起來類似於以下內容:

scp -o 'ProxyCommand ssh userB@hostB nc %h %p' infile.txt userC@hostC:"~/outfile.txt"

我的問題是如何scp通過兩個中間伺服器連接到第三跳伺服器,這樣:

A:/infile.txt -> B -> C -> D:/outfile.txt

我正在尋找一種使用類似於上面提供的第二跳範例的單線來執行此操作的方法……但是如果不可能,所有答案和方法都是有效的。

我正在嘗試做的與通過多個主機或其變體進行的 SCP 不同,它使用 /etc/ssh/ssh_config 文件來設置別名。這不是我想要做的,我正在尋找一個單線。我也沒有看到任何在起點和終點之間有兩個或更多代理主機的例子,所以我相信這個問題是非常有效的。

新的openssh7.3 提供了-J允許您創建所需的單線的開關:

scp -oProxyJump=userB@hostB,userC@hostC infile.txt userD@hostD:"~/outfile.txt"

手冊頁

代理跳轉

將一個或多個跳轉代理指定為[user@]host[:port]. 多個代理可以用逗號分隔並按順序訪問。設置此選項將導致 ssh(1) 連接到目標主機,方法是首先與指定的 ProxyJump 主機建立 ssh(1) 連接,然後從那裡建立到最終目標的 TCP 轉發。

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