SSH zwischen mehreren Vagrant-VMs

SSH zwischen mehreren Vagrant-VMs

Ich versuche, einen lokalen 3-Knoten-Cluster von HP Vertica zu installieren. Die Vertica-Installation verwendet SSH, um die DB-Server-Software auf jedem Knoten zu installieren, wenn sie von einem der Knoten aus ausgelöst wird.

Ich erhalte die Fehlermeldung „Zugriff verweigert (öffentlicher Schlüssel). Ich habe die verschiedenen Beiträge von StackOverflow durchgearbeitet und bin zu folgendem VagrantFile gekommen:-

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

BOX_IMAGE = "ubuntu/xenial64"
NODE_COUNT = 3

Vagrant.configure("2") do |config|
    (1..NODE_COUNT).each do|i|
      config.vm.define "vertica_node#{i}" do |subconfig|
        subconfig.vm.box = BOX_IMAGE
        subconfig.vm.hostname="verticaNode#{i}"

        if i == 1
          subconfig.vm.network "forwarded_port", guest: 5433, host: 5433, id: "Vertica DBEngine"
          subconfig.vm.network "forwarded_port", guest: 5450, host: 5450, id: "Vertica MC"
          subconfig.vm.network "forwarded_port", guest: 1527, host: 1527, id: "Vertica MCDatabase"
        end
        subconfig.vm.network "private_network", ip: "192.168.33.#{i + 10}"

        subconfig.vm.synced_folder "./data", "/vagrant/data", create: true

        subconfig.vm.provider "virtualbox" do |vb|
          vb.name = "VerticaUbuntu_Node#{i}"
          vb.memory = "2048"
        end

      end
    end
  config.ssh.forward_agent = true
  config.ssh.insert_key    = false
  config.ssh.private_key_path = ["~/.vagrant.d/insecure_private_key","~/.ssh/id_rsa"]
  config.vm.provision "shell", path: "bootstrap.sh"
  config.vm.provision "shell", privileged: false do |s|
    ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip
    s.inline = <<-SHELL
    echo #{ssh_pub_key} >> /home/$USER/.ssh/authorized_keys
    sudo bash -c "echo #{ssh_pub_key} >> /root/.ssh/authorized_keys"
    SHELL
  end
end

Alle 3 VMs werden hochgefahren. Ich kann vom Host aus per SSH auf jeden Gast zugreifen. Während ich auf einem Gast bin, kann ich die anderen Gäste anpingen.

Wenn ich versuche, per SSH von einem Gast zu einem der anderen Gäste zu wechseln, erhalte ich die Meldung

The authenticity of host '192.168.33.11 (192.168.33.11)' can't be established.
ECDSA key fingerprint is SHA256:kEdfmMkISpmDMKGGOw77zCLakujVWZYRQomCMYTWZ0E.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.33.11' (ECDSA) to the list of known hosts.
Permission denied (publickey).

Ich wäre für jede Hilfe bei der Lösung dieses Problems dankbar

Antwort1

ich benutzeVagrant-Triggerum per SSH von einer Maschine auf eine andere zugreifen zu können:

Vagrant.configure("2") do |config|
  config.vm.define "master", primary: true do |master|
    # something
  end

  config.vm.define "node" do |node|
    # something else
    node.trigger.after :up do |trigger|
      trigger.run = { inline: 
        "vagrant ssh master -- cp /vagrant/.vagrant/machines/node/virtualbox/private_key ~/.ssh/id_rsa"
      }
    end
  end
end

verwandte Informationen