在現有的 SSH 鏈上使用 SCP?可能的?

在現有的 SSH 鏈上使用 SCP?可能的?

SCP 在複製檔案時會建立新連接,如果涉及防火牆,有時會變得困難。

例如,

主機-A <--> 主機-B <--> 主機-C <--> 主機-D

  • Host-A透過SSH連接到Host-B,然後Host-B透過SSH連接到Host-C,然後再連接到Host-D。
  • Host-A 無法連接 Host-B 以外的其他計算機,Host-B 只能連接 Host-A 和 Host-C,Host-C 只能連接 Host-B 和 Host-D,最後 Host-D 可以連接只連接到Host-C。

命令(在 Host-D 上)scp /home/user/file 主機-A:/home/user/newfile將嘗試在兩者之間創建新的 SSH 隧道,這不是我想要的。我希望現有的 SSH 隧道鏈會透過先前的主機將檔案複製回主機,直到到達主機 A。

我怎樣才能做到這一點?

答案1

您可以重新使用現有的連線。使用命令列開關-M或(客戶端)配置選項ControlMaster。看這個答案有關詳細信息,請訪問 StackOverflow。

我已經廣泛使用了它,並與ControlPersistto 結合使用,僅在延遲後才關閉連接。這可以避免您原本會產生的連接時間,並在多次關閉和重新連接時顯著提高效能(就像我在互動式使用期間經常做的那樣)。

請注意,它不能很好地連接到某些主機(例如 GitHub),因此如果您將其設定為預設選項,您可能需要明確排除某些主機使用此選項。

相關內容