簡體   English   中英

將文件從一個VM傳輸到另一個VM

[英]Transfer a file from one VM to another VM

問題出在subconfig1.vm.provision ...上,關於我應該如何進行的任何建議? 初始化VM后,Vagrant告訴我SSH無法完成該工作,因為連接被拒絕。 我可以完成這項工作,但是只能手動地插入密碼,這里的主要問題是如何超越密碼來自動進行此工作流程。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

  config.vm.define "Machine2" do |subconfig2|

    subconfig2.vm.box = "ubuntu/trusty64"
    subconfig2.vm.hostname = "Machine2"
    subconfig2.vm.network :private_network, ip: "172.16.10.101"
    subconfig2.vm.network "forwarded_port", guest: 80, host: 4445, host_ip: "127.0.0.1"

  end

   #config.vm.provision "file", source: "~/.vagrant/machines/Machine2/virtualbox/private_key", destination: "/home/vagrant/ssh"


  config.vm.define "Machine1" do |subconfig1|
    subconfig1.vm.box = "ubuntu/trusty64"
    subconfig1.vm.hostname = "Machine1"
    subconfig1.vm.network :private_network, ip: "172.16.10.100"

   # subconfig1.vm.provision "file", source: "~/.vagrant/machines/Machine2/virtualbox/private_key", destination: "/home/vagrant"

    subconfig1.vm.provision "shell", privileged: false, inline: <<-SHELL
      touch vagrantvm1-info
      ifconfig | grep "HWaddr" | cut -b 32-55 >> vagrantvm1-info
    #  ssh -o StrictHostKeyChecking=no vagrant@127.0.0.1 uptime

      cp /vagrant/.vagrant/machines/Machine2/virtualbox/private_key ~/.ssh
      scp -P 2222 -i ~/.ssh/private_key vagrant@127.0.0.1:/home/vagrant/vagrantvm1-info /home/vagrant

    #  ssh vagrant@172.16.10.101
    #  scp vagrant@172.16.10.101:/home/vagrant/vagrantvm1-info /home/vagrant

   SHELL
  end




  config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
   vb.gui = true
# Customize the amount of memory on the VM:
   vb.memory = "1024"
  end

  config.vm.provision "shell", privileged: false, inline: <<-SHELL
    apt-get install -y avahi-daemon libnss-mdns
    apt-get update
    apt-get install -y apache2
  SHELL

end

您需要傳遞私鑰,這樣您才能成功登錄。

  1. 檢索使用哪個私鑰

通常,該文件位於.vagrant/machines/<machine_name>/provider/private_key

您還可以運行vagrant ssh-config來找出所有機器都使用了哪個私鑰:

fhenri@machine:/Volumes/VM/vagrant/golang (master)$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Volumes/VM/vagrant/golang/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

在這種情況下,私鑰是/Volumes/VM/vagrant/golang/.vagrant/machines/default/virtualbox/private_key

  1. 將密鑰復制到VM中。

由於要將虛擬機復制到虛擬機,因此原始虛擬機需要知道私鑰,以便將其連接到目標虛擬機。

使用文件配置程序或Shell腳本中的復制文件將用於登錄到目標VM的私鑰復制到原始VM中。

  1. 使用私鑰的scp-請參見scp手冊頁

     scp -i ~/.ssh/private_key \\ /home/vagrant/vagrantvm1-info \\ vagrant@172.16.10.101:/home/vagrant 

我用來測試的更新后的Vagrantfile如下

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

  config.vm.define "Machine2" do |subconfig2|

    subconfig2.vm.box = "ubuntu/trusty64"
    subconfig2.vm.hostname = "Machine2"
    subconfig2.vm.network :private_network, ip: "172.16.10.101"
    subconfig2.vm.network "forwarded_port", guest: 80, host: 4445, host_ip: "127.0.0.1"

  end

   #config.vm.provision "file", source: "~/.vagrant/machines/Machine2/virtualbox/private_key", destination: "/home/vagrant/ssh"


  config.vm.define "Machine1" do |subconfig1|
    subconfig1.vm.box = "ubuntu/trusty64"
    subconfig1.vm.hostname = "Machine1"
    subconfig1.vm.network :private_network, ip: "172.16.10.100"

   # subconfig1.vm.provision "file", source: "~/.vagrant/machines/Machine2/virtualbox/private_key", destination: "/home/vagrant"

    subconfig1.vm.provision "shell", privileged: false, inline: <<-SHELL
      touch vagrantvm1-info
      ifconfig | grep "HWaddr" | cut -b 32-55 >> vagrantvm1-info
    #  ssh -o StrictHostKeyChecking=no vagrant@127.0.0.1 uptime

      cp /vagrant/.vagrant/machines/Machine2/virtualbox/private_key ~/.ssh && chmod 0644 ~/.ss/private_key
      # make sure to accept the server keys
      ssh-keyscan 172.16.10.101 >> ~/.ssh/known_hosts
      scp -i ~/.ssh/private_key /home/vagrant/vagrantvm1-info vagrant@172.16.10.101:/home/vagrant

    #  ssh vagrant@172.16.10.101
    #  scp vagrant@172.16.10.101:/home/vagrant/vagrantvm1-info /home/vagrant

   SHELL
  end




  config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
   #vb.gui = true
# Customize the amount of memory on the VM:
   vb.memory = "1024"
  end

  config.vm.provision "shell", inline: <<-SHELL
    apt-get install -y avahi-daemon libnss-mdns
    apt-get update
    apt-get install -y apache2
  SHELL

end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM