使用 localhost 作为跳转箱在虚拟机之间复制文件

使用 localhost 作为跳转箱在虚拟机之间复制文件

我曾经遇到过通过 SSH 转发进行 SCP 的情况,

VM-A <---> VM-B <---> VM-C

并且需要将文件从 A 传输到 C 或反之亦然,即在这个场景中 B 是 Jumpbox。

就我而言,通过我的本地主机,我可以访问 2 个虚拟机,并且我想在它们之间共享文件。

VM-A <---> VM-B
VM-A <---> VM-C

并且需要在 B 和 C 之间进行文件传输。(A 是我的本地主机,我可以在上面运行 SSH 命令)

现在,实现此目的的一种方法是:

  1. 从 B SCP 到 A,然后再次从 A SCP 到 C。

但是,由于 SCP 命令仅将源和目标作为输入,我认为这样做就可以了:

scp user@VM-B user@VM-C

如果我在 A 上运行此命令,因为 A 具有必要的授权。然而,这会导致:

Host key verification failed.
lost connection

那么,如何克服这个问题并将数据直接从 B 移动到 C 呢?

答案1

直接将数据从 B 移动到 C?

这实际上是一个问题 – scp 试图让 VM-B 直接连接到 VM-C,绕过 VM-A。

您希望完成转移-3直接,使用scp 选项完成。

scp -3 user@VM-B user@VM-C

(在当前的 OpenSSH 版本中,这是默认设置,-R启用旧的直接模式。)

答案2

您可以使用“桥接”连接而不是 NAT 来设置虚拟机的网络设置。这将使您的虚拟机与主机处于同一个本地网络上,并具有自己的本地 ipv4 地址,这样它们就可以通过这种方式直接 scp 到彼此。

如果您想这样做,请转到每个虚拟机的“设置”->“网络”->“附加到”

但是如果您想将您的虚拟机放在主机下隔离的嵌套网络上,那么这对您来说并不适用。

相关内容