Linux 从远程服务器到另一个远程服务器的SCP
我有一个服务器“B”,它可以将SCP文件发送到服务器“a”,也可以将SCP文件发送到服务器“C” i、 e。 A、B、C 服务器“A”和服务器“C”无法相互联系。只有服务器B可以同时访问这两个服务器。 我想将文件从a传输到C,服务器B上没有(或最小)存储空间 有没有一种方法可以将文件从a管道传输到C管道,而无需将其存储在B中或只需最少的步骤Linux 从远程服务器到另一个远程服务器的SCP,linux,ssh,scp,Linux,Ssh,Scp,我有一个服务器“B”,它可以将SCP文件发送到服务器“a”,也可以将SCP文件发送到服务器“C” i、 e。 A、B、C 服务器“A”和服务器“C”无法相互联系。只有服务器B可以同时访问这两个服务器。 我想将文件从a传输到C,服务器B上没有(或最小)存储空间 有没有一种方法可以将文件从a管道传输到C管道,而无需将其存储在B中或只需最少的步骤 谢谢。您可以通过隧道完成: # Open a tunnel to server C $ ssh -L 2222:<server C>:22 -N
谢谢。您可以通过隧道完成:
# 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>
#打开到服务器C的隧道
$ssh-l2222::22-N-L用户和
#将文件复制到服务器C
$scp-P 2222本地主机:
请注意,隧道在步骤2之后仍在运行。来自scp(1)
:
说明
。。。两个远程主机之间的拷贝
也允许
如果您愿意,您可以在没有scp的情况下执行此操作。登录到计算机“B”并运行以下操作:
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 -'
如果您希望从运行命令,那么类似的操作应该可以:
tar cf - file... | ssh userB@B 'ssh userC@C "cd /dest/dir && tar xvf -" '
脱离主题,但您可以这样做:尝试过这个,但我认为我们的服务器有一些配置阻止它。您可能正在运行不支持它的旧版本。您可能应该添加选项
-3
,以使文件通过本地主机。根据手册“-3份副本在两个远程主机之间通过本地主机传输。如果没有此选项,数据将直接在两个远程主机之间复制。请注意,此选项将禁用进度表。”
tar cf - file... | ssh userB@B 'ssh userC@C "cd /dest/dir && tar xvf -" '