Hoe Vagrant error te repareren: `private_key_path` bestand moet bestaan:

Ik gebruik PuPHPet om virtuele ontwikkelomgevingen te maken.

Gisteren heb ik een configuratiebestand voor een nieuwe box gemaakt. Wanneer ik het probeer te draaien met de opdracht vagrant-up , krijg ik de volgende foutmelding:

C:\xx>vagrant up

Bringing machine 'default' up with 'virtualbox' provider... There are errors in the configuration of this machine. Please fix the following errors and try again:

SSH: * private_key_path file must exist: P://.vagrant.d/insecure_private_key

Ik kwam deze vraag tegen en verplaatste de onbeveiligde_privé_key van puphpet \ bestanden \ punt \ ssh naar dezelfde map als waar het Vagrantbestand is. Dit geeft echter dezelfde fout.

Ik ben ook in de war door de directory die in de foutmelding wordt gegeven;

P: //.vagrant.d/insecure_private_key

Waarom wordt de 'P'-schijf genoemd?

Mijn Vagrantfile is te vinden hier .

Geniet van advies over het oplossen van deze fout.

4
Bijgevoegd in kwestie.
toegevoegd de auteur Sid, de bron
Kunt u uw Vagrantfile delen?
toegevoegd de auteur Vaibhav Sagar, de bron

9 antwoord

Het lijkt erop dat dit komt omdat je misschien een landloper hebt vernietigd die de onveilige_privé_sleutel heeft verwijderd.

Maar het zwerfkabinetingsbestand zoekt de puphpet \ files \ dot \ ssh-bestanden op, als ze daar zijn, zoekt het naar de onbeveiligde_privé-sleutel.

delete (rename) the id_rsa files in puphpet\files\dot\ssh

dit maakte het voor mij!

6
toegevoegd
verwijder (hernoem) de id_rsa bestanden in puphpet \ bestanden \ punt \ ssh werkte voor mij!
toegevoegd de auteur Bo Pennings, de bron

Ik loste het probleem op door het pad te vervangen door onse_private_key door het pad naar het bestand insecure_private_key hard te coderen.

Dus het ging van:

config.ssh.private_key_path = [
    customKey,
    "#{ENV['HOME']}/.vagrant.d/insecure_private_key"
]

Naar:

config.ssh.private_key_path = [
    customKey,
    "C:/Users/My.User/.vagrant.d/insecure_private_key"
]
5
toegevoegd
Het is gedaan! Bedankt!
toegevoegd de auteur Wes Eklund, de bron

Je kunt ook gewoon alle bestanden in de puphpet-map verwijderen rm -rf puphpet/files/dot/ssh/* en de vm zou ze opnieuw moeten genereren als je vagrant-bepalingen uitvoert.

2
toegevoegd

Ik weet niet zeker wat er mis is met je Vagrant-installatie, maar deze regel:

vagrant_home = (ENV['VAGRANT_HOME'].to_s.split.join.length > 0) ? ENV['VAGRANT_HOME'] : "#{ENV['HOME']}/.vagrant.d"

is wat de variabele instelt die later hier wordt gebruikt:

config.ssh.private_key_path = [
  customKey,
  "#{vagrant_home}/insecure_private_key"
]

De reden dat dit gebeurt is dat het vanaf Vagrant 1.7 een unieke private sleutel genereert voor elke VM die je hebt. Er is, naar mijn mening, een fout in dat Vagrant de door de gebruiker gedefinieerde private_key_path volledig negeert als het detecteert dat het eerder een unieke sleutel heeft gegenereerd.

Wat PuPHPet hier doet, is door Vagrant zijn unieke SSH-sleutel te laten genereren. Zodra de VM opstart en SSH-toegang heeft, gaat deze naar binnen en genereert een andere sleutel om deze te vervangen.

De reden waarom we het vervangen is omdat deze nieuwe Vagrant-functie alleen werkt op OSX/Linux-hosts, omdat Windows niet over de vereiste tools beschikt.

Mijn manier werkt in alle OS omdat het de SSH-sleutelgeneratie binnen de VM zelf doet.

Dit alles hangt samen met uw vraag, maar het antwoord is dat er iets mis is met uw Vagrant-installatie als die omgevingsvariabelen niet zijn gedefinieerd.

1
toegevoegd
Bedankt voor de info. Ik heb mijn versie van Vagrant bijgewerkt maar het mocht niet baten.
toegevoegd de auteur Sid, de bron

Ik weet niet zeker wat er mis is met je Vagrant-installatie, maar deze regel:

vagrant_home = (ENV['VAGRANT_HOME'].to_s.split.join.length > 0) ? ENV['VAGRANT_HOME'] : "#{ENV['HOME']}/.vagrant.d"

is wat de variabele instelt die later hier wordt gebruikt:

config.ssh.private_key_path = [
  customKey,
  "#{vagrant_home}/insecure_private_key"
]

De reden dat dit gebeurt is dat het vanaf Vagrant 1.7 een unieke private sleutel genereert voor elke VM die je hebt. Er is, naar mijn mening, een fout in dat Vagrant de door de gebruiker gedefinieerde private_key_path volledig negeert als het detecteert dat het eerder een unieke sleutel heeft gegenereerd.

Wat PuPHPet hier doet, is door Vagrant zijn unieke SSH-sleutel te laten genereren. Zodra de VM opstart en SSH-toegang heeft, gaat deze naar binnen en genereert een andere sleutel om deze te vervangen.

De reden waarom we het vervangen is omdat deze nieuwe Vagrant-functie alleen werkt op OSX/Linux-hosts, omdat Windows niet over de vereiste tools beschikt.

Mijn manier werkt in alle OS omdat het de SSH-sleutelgeneratie binnen de VM zelf doet.

Dit alles hangt samen met uw vraag, maar het antwoord is dat er iets mis is met uw Vagrant-installatie als die omgevingsvariabelen niet zijn gedefinieerd.

1
toegevoegd
Bedankt voor de info. Ik heb mijn versie van Vagrant bijgewerkt maar het mocht niet baten.
toegevoegd de auteur Sid, de bron

Wanneer u uw puphet-configuratie deelt met uw teamgenoten, is hardcoding van het private_key_path niet raadzaam volgens het geaccepteerde antwoord.

Mijn hostcomputer is Windows, dus ik heb een nieuwe omgevingsvariabele VAGRANT_HOME met waarde% USERPROFILE% toegevoegd, omdat hier de map /.vagrant.d zich bevindt. Wanneer u deze variabele toevoegt, zorg er dan voor dat u de opdrachtprompts sluit die open staan, zodat de variabele wordt toegepast

Ik hoop dat dit helpt

1
toegevoegd

Wanneer u uw puphet-configuratie deelt met uw teamgenoten, is hardcoding van het private_key_path niet raadzaam volgens het geaccepteerde antwoord.

Mijn hostcomputer is Windows, dus ik heb een nieuwe omgevingsvariabele VAGRANT_HOME met waarde% USERPROFILE% toegevoegd, omdat hier de map /.vagrant.d zich bevindt. Wanneer u deze variabele toevoegt, zorg er dan voor dat u de opdrachtprompts sluit die open staan, zodat de variabele wordt toegepast

Ik hoop dat dit helpt

1
toegevoegd

Adding to PunctuationMark's answer you can also set the VAGRANT_HOME environment variable in your Vagrantfile: ENV['VAGRANT_HOME'] = ENV['USERPROFILE']

0
toegevoegd

Adding to PunctuationMark's answer you can also set the VAGRANT_HOME environment variable in your Vagrantfile: ENV['VAGRANT_HOME'] = ENV['USERPROFILE']

0
toegevoegd