Solución:
Puede usar el módulo de archivo central de Ruby, así:
config.vm.provision "shell" do |s|
ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip
s.inline = <<-SHELL
echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys
echo #{ssh_pub_key} >> /root/.ssh/authorized_keys
SHELL
end
Este ejemplo de trabajo se adjunta ~/.ssh/id_rsa.pub
al ~/.ssh/authorized_keys
del usuario vagabundo y root, lo que le permitirá utilizar su clave SSH existente.
Copiar la clave pública deseada entraría directamente en la fase de aprovisionamiento. La respuesta exacta depende del aprovisionamiento que desee utilizar (shell, Chef, Puppet, etc.). El más trivial sería un file
aprovisionador de la clave, algo a lo largo de esto:
config.vm.provision "file", source: "~/.ssh/id_rsa.pub", destination: "~/.ssh/me.pub"
Bueno, en realidad necesitas agregar a las claves_autorizadas. Utilice el aprovisionador de shell, así:
config.vm.provision "shell", inline: <<-SHELL
cat /home/vagrant/.ssh/me.pub >> /home/vagrant/.ssh/authorized_keys
SHELL
end
También puede utilizar un verdadero aprovisionador, como Puppet. Por ejemplo, consulte Administrar claves autorizadas SSH con Puppet.
Hay una forma más “elegante” de lograr lo que quieres hacer. Puede encontrar la clave privada existente y usarla en lugar de pasar por la molestia de agregar su clave pública.
Proceda así para ver la ruta a la clave privada existente (busque a continuación para IdentityFile):
correr
vagrant ssh-config
resultado:
$ vagrant ssh-config Host magento2.vagrant150 HostName 127.0.0.1 User vagrant Port 3150 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile "/Users/madismanni/m2/vagrant-magento/.vagrant/machines/magento2.vagrant150/virtualbox/private_key" IdentitiesOnly yes LogLevel FATAL
Luego puede usar la clave privada de esta manera, tenga en cuenta también el interruptor para desactivar la autenticación de contraseña
ssh -i /Users/madismanni/m2/vagrant-magento/.vagrant/machines/magento2.vagrant150/virtualbox/private_key -o PasswordAuthentication=no [email protected] -p 3150