兩個網路之間的 SCP

兩個網路之間的 SCP

我需要在未連接到相同網路的兩台電腦之間傳輸檔案。我有第三台計算機,可以透過 VPN 查看兩個網路。

從第三台電腦上,我可以執行以下操作:

scp root@firstcomputer:./file ./

並用以下語句完成傳輸:

scp ./file root@secondcomputer:./

但我不能只用一行來完成,如下:

scp root@firstcomputer:./file root@secondcomputer:./

錯誤回應是

ssh: connect to host secondcomputer port 22: No route to host
lost connection

我意識到這可能是因為第一台電腦無法看到第二台電腦。是否可以給 SCP 一個參數來處理這樣一個事實:運行 SCP 程式的機器是唯一可以看到兩台電腦的機器?

順便說一句,第三台電腦是裝有 Lion 的 Mac,第一台和第二台電腦運行的是 Debian。

答案1

您應該能夠使用 SSH 隧道。

假設您嘗試將檔案從遠端電腦(「遠端」)傳輸到本機(「本機」),請在本機上鍵入下列內容,透過第三台電腦(「閘道」)建立隧道:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

然後您可以在此隧道上執行無限數量的 SCP 命令(仍在本機電腦上輸入):

scp -P 12345 remotelogin@localhost://path/to/remote/file /local/path/where/you/want/file

我剛剛在我的網路上進行了測試,效果非常好。

如果遠端網路是安全的,則上述方法沒問題,但如果不安全,則需要在本地和網關之間建立一條隧道,並在網關和遠端之間建立另一條隧道,透過公共連接埠號碼將兩者連結起來。

答案2

scp 選項 -3 應該是您正在尋找的。將其放入您的範例中:

scp -3 root@firstcomputer:./file root@secondcomputer:./

請注意,-3 選項首次在 2011 年初發布的 OpenSSH 5.7 中引入。

答案3

你可以試試這個:

root@firstcomputer:./file /tmp && scp /tmp/file root@secondcomputer:./ && rm /tmp/file

這會將檔案複製到第三台電腦上的 /tmp 目錄中,如果成功,它將將該檔案重新複製到輔助電腦上,然後自行清理。由於您使用的是 && 運算符,因此每個命令僅在前一個命令成功時才會執行。

相關內容