我想将文件从 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\\\" \
\" \
"