2台服务器之间的SCP文件经过很少的服务器

2台服务器之间的SCP文件经过很少的服务器

我想将文件从 server-a 复制到 server-d,但我只能从 server-b 访问 server-d,然后再访问 server-c。 server-a只能访问server-b,server-b只能访问server-c,server-c只能访问server-d。

目前我这样做:

server-a> scp /tmp/file.txt user@server-b
server-a> ssh user@server-b
server-b> scp /tmp/file.txt user@server-c
server-b> ssh user@server-c
server-c> scp /tmp/file.txt user@server-d

这可以通过 5,6,7,.. 服务器

我可以用一个命令来做这件事吗?

答案1

您需要ProxyCommand,请参阅手册页。这是一个例子:

Host serverB
HostName serverA.com
User someuser
ProxyCommand ssh -q serverB -W %h:%p  # -W is supported by a recent OpenSSH
# or for older versions or other implementations
# ProxyCommand ssh -q serverB nc %h %p

这允许您键入ssh serverB并连接到 serverA,然后服务器连接到 serverB。这可以很容易地扩展到与

答案2

你最好的选择可能是建立隧道,然后cat文件通过这些隧道:

cat file.txt | ssh -A -t user@server-b \
   "cat | ssh -A user@server-c         \
      \"cat | ssh -A user@server-d     \
         \\\"cat > /tmp/file.txt\\\"   \
      \"                               \
   "

相关内容