![SSH zwischen mehreren Vagrant-VMs](https://rvso.com/image/1558053/SSH%20zwischen%20mehreren%20Vagrant-VMs.png)
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