我有 2 台虚拟机。第一台虚拟机是存储源文件的地方。第二台虚拟机是我的 bash 脚本所在的地方,它应该将文件从源复制到我的第二台虚拟机。
我如何在 Bash 中执行此操作?
当我的脚本在第 3 台机器上运行时,是否可以使用 Bash 将文件从 1 台虚拟机 SCP 到 2 台虚拟机?如果可以,请告诉我如何操作。
答案1
这是可能的(只要两个主机都在监听 SSH,并且第一个远程主机可以看到第二个)!为什么不尝试一下呢?
scp remote1:/path/to/file remote2:/path/to
您可能需要为这两个主机都提供用户名和/或密码(如果您的用户名在不同机器上有所不同)。
如果您使用基于代理的身份验证并启用了代理转发,则无需提供任何密码(这是我喜欢的工作方法)。
请注意,这与 Bash(甚至虚拟机)无关,并且可以在任何 shell 中运行。
答案2
通常的做法是通过 ssh 进入其中一台远程机器,然后从那里发出 scp。
#3rd-vm> ssh 2nd-vm
#2nd-vm> scp file 1st-vm:~/
答案3
如果您需要通过第三台机器进行桥接,您可以使用 ssh 进行如下操作:
ssh remote1 cat file | ssh remote2 'cat > file'
或者使用 tar:
ssh remote1 tar cf - path/to/copy | ssh remote2 tar xf - -C path/to/dest