![在現有的 SSH 鏈上使用 SCP?可能的?](https://rvso.com/image/1552376/%E5%9C%A8%E7%8F%BE%E6%9C%89%E7%9A%84%20SSH%20%E9%8F%88%E4%B8%8A%E4%BD%BF%E7%94%A8%20SCP%EF%BC%9F%E5%8F%AF%E8%83%BD%E7%9A%84%EF%BC%9F.png)
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。
我已經廣泛使用了它,並與ControlPersist
to 結合使用,僅在延遲後才關閉連接。這可以避免您原本會產生的連接時間,並在多次關閉和重新連接時顯著提高效能(就像我在互動式使用期間經常做的那樣)。
請注意,它不能很好地連接到某些主機(例如 GitHub),因此如果您將其設定為預設選項,您可能需要明確排除某些主機使用此選項。