2014-09-24 206 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