利用 ssh反向隧道讓兩部無法直接連接主機做資料傳遞

因為某些需求,需要將資料從 A主機(192.168.100.101) 搬到 C主機(192.168.100.103)。另外還有一部 B主機((192.168.100.102)。

目前實際狀況:

  1. A主機,C主機 不能互通。
  2. B主機 可以透過 ssh 直接連接 A主機,C主機。
  3. A主機,C主機 不能直接連接 B主機。

解決想法:

  1. B主機透過 ssh 連接A主機,C主機,並分別建立反向隧道。
  2. A主機,C主機 利用反向隧道,透過 B主機傳遞資料。
  1. 建立 A主機, C主機 與 B主機的反向隧道
  2. 建立反向隧道:
    
         B(192.168.100.102)-->A(192.168.100.101) : 
             ssh -NfR 4000:localhost:22 user@A主機(192.168.100.101)
    
         B(192.168.100.102)-->C(192.168.100.103) : 
             ssh -NfR 4000:localhost:22 user@C主機(192.168.100.103) 
    
        

     

    A, C 連回 B主機:
    
         A(192.168.100.101)-->B(192.168.100.102) : 
             ssh user@localhost -P 4000
    
         C(192.168.100.103)-->B(192.168.100.102) : 
              ssh user@localhost -P 4000
    
        

     

  3. 傳遞資料
  4. 使用scp,資料從 A主機 –> C主機
    
          先登入到 A主機上,再:
          scp -J user@localhost:4000  A主機/本地檔案路徑  user@C主機(192.168.100.103):/目的地路徑/
    
        

     

    若是大檔案,或是大批檔案,建議使用 rsync
    
          先登入到 A主機上,再:
          rsync -avz -e 'ssh -J user@localhost:4000' A主機/本地檔案路徑  user@C主機(192.168.100.103):/目的地路徑/
    
        

     

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*