Linux

如何使用 ssh 通過代理轉發多跳複製文件?

  • April 24, 2017

我有一組伺服器都正確配置了 SSH 代理轉發。這是典型的堡壘伺服器式配置,您可以從外部連接的唯一機器是伺服器 A。從伺服器 A,您可以使用代理轉發連接到伺服器 B、C、D 等。一切執行良好。

有時我想將文件從本地電腦複製到伺服器 B。為此,我必須首先將文件 scp 到伺服器 A。然後 ssh 到伺服器 A 並將文件 scp 到伺服器 B。然後我從伺服器 A。

有沒有辦法通過伺服器 A 將文件直接從我的電腦複製到伺服器 B,只需在我的本地電腦上執行一個命令?

如果您的 sshd 配置為允許 TCP 轉發,那麼您可以設置從您的電腦通過 A 到 B 的隧道,然後使用它來複製內容。創建隧道

ssh -f -L 2050:B:22 A -N
  • -f後台 ssh 命令,以便您可以重新使用終端。
  • -L 2050:B22將 localhost 埠 2050 綁定到主機 B 埠 22
  • -N不要執行遠端命令。

然後從您的電腦複製到B

scp -P 2050 filetocopy localhost:/destination/path 

編輯:如果你使用

ssh -L 2050:B:22 A -N &

然後你會被告知 ssh 命令在後台執行時的 PID。

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