是否有任何选项可以将简单文件从一个 Vagrant VM 传输到另一个 Vagrant VM?
我为两个虚拟机分配了静态 IP,监视开放的 SSH 端口并尝试使用 scp 命令传输文件,但不幸的是它返回错误“权限被拒绝(公钥)”,这是合理的。
我正在寻找另一种将文件传输到目标来宾虚拟机的方法(例如,将公钥传输到目标虚拟机,然后通过 SSH 连接到它),以替代 scp。
我已经尝试过 scp,但由于未授权的公钥而被拒绝。
此外,我尝试将 pub key 传输到主机,然后手动复制到每个虚拟机,但对于 1..N 个足够大的虚拟机来说,它的效率不高。
这是多机器环境的示例。每个 vagrant vm 在目录中都有自己的密钥
/vagrant/.vagrant/machines/myname/provider_name/private_key
将此行添加到您的 Vagrantfile 中:
config.vm.synced_folder ".", "/vagrant", type: "virtualbox", mount_options: ["dmode=700","fmode=700"]
使用 ssh 或 scp:
ssh -i /vagrant/.vagrant/machines/app/virtualbox/private_key [email protected]
您可以直接使用
ssh
,而不是尝试使用 scp
或 synced_folder
,如果所有虚拟机都是从同一目录创建的,则应该已经有所有虚拟机都相同的挂载 /vagrant
目录,如果您可以添加另一个synced_folder
。
如果您想要的话,另一种方法
ssh
您可以创建额外的ssh密钥(使用ssh-keygen -t ed25519 -f ./my_key
),并在创建过程中将它们复制到虚拟机中查看此处了解详细信息,当然您还需要复制私钥,因此在连接过程中ssh
您可以传递参数-i my_key
,因为所有主机都将拥有相同的公钥和私钥,它应该可以工作。 (请记住,它不安全,因为通常不应共享私钥)