SCP从远程服务器到另一台远程服务器

时间:2014-09-24 00:14:00

标签: linux ssh scp

我有一个服务器“B”,它可以将SCP文件传入/传出服务器“A”,也可以将SCP文件传入/传出服务器“C”。

即。 A< -----> B< -----> ç

服务器“A”和服务器“C”无法相互联系。只有服务器B可以同时到达。 我想在服务器B上没有(或最小)存储的情况下将文件从A传输到C.

是否有办法将文件从A传输到C而不将其存储在B中或使用最少的步骤?

感谢。

3 个答案:

答案 0 :(得分:4)

来自scp(1)

  

<强>描述

     
    

...两个远程主机之间的复制          也是允许的。

  
scp host1:foo.txt host2:foo.txt

答案 1 :(得分: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之后隧道仍在运行。

答案 2 :(得分:1)

如果您愿意,可以在没有scp的情况下执行此操作。登录机器&#39; B&#39;并运行:

ssh userA@A 'cat /source/file' | ssh userC@C 'cat > /dest/file'

您应该设置其中一个或两个ssh实例以使用密钥进行登录,这样您就不会同时通过两个ssh实例提示输入密码。

如果您希望文件复制过程更加防错,或者您希望一次传输多个文件,则可以使用tar

ssh userA@A 'cd /source/dir && tar cf - file1 file2...' |
    ssh userC@C 'cd /dest/dir && tar xvf -'

如果你宁愿从A运行命令,那么这样的事情应该有效:

tar cf - file... | ssh userB@B 'ssh userC@C "cd /dest/dir && tar xvf -" '