2014-09-24 183 views
2

我有一個服務器「B」,它可以將SCP文件傳入/傳出服務器「A」,也可以將SCP文件傳入/傳出服務器「C」。從遠程服務器到另一個遠程服務器的SCP

即 甲< ----->乙< ----->Ç

服務器 「A」 和服務器 「C」 不能達到彼此。只有服務器B可以同時到達。 我想將文件從A傳輸到C,而不在服務器B上存儲(或最小)存儲。

有沒有將文件從A文件傳輸到C文件而無需將文件存儲在B文件或最小步驟的方法?

謝謝。

+1

題外話,但在這裏你去:http://blog.sensible.io/2014/05/17/ssh-tunnel-local-和遠程端口轉發解釋與examples.html – 2014-09-24 00:19:37

回答

1

,如果你喜歡,你可以做到這一點沒有SCP。登錄到機器「B」和運行這個:

ssh [email protected] 'cat /source/file' | ssh [email protected] 'cat > /dest/file' 

您應該建立一個或兩個ssh的實例,爲login的關鍵,讓你不通過在兩個SSH實例提示輸入密碼同時。

如果你想在文件拷貝過程中要多一點錯誤校對,或者如果你想一次傳輸多個文件,你可以使用tar

ssh [email protected] 'cd /source/dir && tar cf - file1 file2...' | 
    ssh [email protected] 'cd /dest/dir && tar xvf -' 

如果你願意而運行從A命令,那麼這樣的事情應該工作:

tar cf - file... | ssh [email protected] 'ssh [email protected] "cd /dest/dir && tar xvf -" ' 
1

你可以用隧道做到這一點:

# Open a tunnel to server C 
$ ssh -L 2222:<server C>:22 -N -l user <server B> & 
# Copy the file to server C 
$ scp <file> -P 2222 localhost:<remote filename> 

注意,隧道步驟2

3

後仍在運行從scp(1)

說明

...兩臺遠程主機 之間的副本也是允許的。

scp host1:foo.txt host2:foo.txt 
+0

試過這個,但我認爲我們的服務器有一些配置停止它。 – Steven 2014-09-25 05:57:13

+0

您可能正在運行不支持它的舊版本。 – 2014-09-25 05:58:16