vagrant effettua il login come root per impostazione predefinita


92

Problema: spesso il primo comando che digito nelle mie caselle è su -.

Domanda: come faccio a vagrant sshutilizzare l'utente root per impostazione predefinita?

Versione: vagrant 1.6.5


Stack Overflow è un sito per domande di programmazione e sviluppo. Questa domanda sembra essere fuori tema perché non si tratta di programmazione o sviluppo. Vedi Quali argomenti posso chiedere qui nel Centro assistenza. Forse Super User o Unix e Linux Stack Exchange sarebbero un posto migliore per chiedere. Vedi anche Dove posso pubblicare domande su Dev Ops?
jww

Risposte:


141

Questo è utile:

sudo passwd root

per chiunque sia stato sorpreso dalla necessità di impostare prima una password di root in vagrant


1
Salvato la mia vita. Sai se questo ha delle ripercussioni su come agisce il vagabondo?
Matt

1
La lezione qui è che se crei un box di base, segui le convenzioni suggerite da Hashicorp e imposta il tuo passwd di root su "vagrant". vedi docs.vagrantup.com/v2/boxes/base.html
Mike D

Ci sono potenziali problemi di sicurezza con un server che ha una password di root facilmente indovinata in giro sul tuo personal computer, però? Immagino che le impostazioni di rete aiutino in questo, ma mi chiedo.
Nathan Basanese

1
Grazie per il suggerimento. Si scopre che le scatole vagabonde di Ubuntu impostano una password casuale per l'utente root (vedere groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Quindi è sempre necessario impostare prima una password di root.
asmaier

Grazie, ne
avevo

110

Soluzione:
aggiungi quanto segue al tuo Vagrantfile:

config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

Quando d' vagrant sshora in poi, effettuerai il login come roote dovresti aspettarti quanto segue:

==> mybox: Waiting for machine to boot. This may take a few minutes...
    mybox: SSH address: 127.0.0.1:2222
    mybox: SSH username: root
    mybox: SSH auth method: password
    mybox: Warning: Connection timeout. Retrying...
    mybox: Warning: Remote connection disconnect. Retrying...
==> mybox: Inserting Vagrant public key within guest...
==> mybox: Key inserted! Disconnecting and reconnecting using new SSH key...
==> mybox: Machine booted and ready!

Aggiornamento 23 giugno 2015: funziona anche per la versione 1.7.2. La sicurezza delle chiavi è migliorata dalla 1.7.0; questa tecnica sovrascrive il metodo precedente che utilizza una chiave privata nota. Questa soluzione non è concepita per essere utilizzata per una casella accessibile pubblicamente senza adeguate misure di sicurezza prima della pubblicazione.

Riferimento:


Potrebbe esserci un motivo per ottenere la richiesta della password durante l'esecuzione vagrant ssh? (dopo aver apportato le modifiche descritte) Vagrant versione 1.7.2
roign

@RobertIgnat forse che devi impostare il tuo passwd di root in modo che corrisponda a quello che hai nel tuo config.ssh.passwordvalore. dovresti essere in grado di commentare le config.ssh.*righe appena aggiunte per accedere alla tua casella e quindi modificare la password di root tramite sudo passwd root.
Mike D

11
Per una macchina che è già stata fornita, fare quanto sopra e faremkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez

2
non funziona per una nuova installazione di Vagrant, probabilmente perché quando si usa, ad esempio, ubuntu / xenial, è NECESSARIO utilizzare gli accessi utente inseriti lì. (vedi anche stackoverflow.com/a/40478402/605463 )
AXD

1
Per chiunque altro utilizzi centos/7: Questa casella imposta una password di root casuale; si può vagrant sshe quindi sudo sueseguire il root, ma (da quello che posso dire) le impostazioni di configurazione non funzionano su un nuovo vagrant uputilizzo di questa VM.
mhulse

35

Funziona se sei su ubuntu / trusty64 box:

vagrant ssh

Una volta che sei nella scatola di Ubuntu:

sudo su

Ora sei un utente root. Puoi aggiornare la password di root come mostrato di seguito:

sudo -i
passwd

Ora modifica la riga sottostante nel file /etc/ssh/sshd_config

PermitRootLogin yes

Inoltre, è conveniente creare il proprio nome utente alternativo:

adduser johndoe

Aspetta finché non chiede la password.


12

Se Vagrantfilecome di seguito:

config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

Ma vagabondo ti chiede ancora la password di root, molto probabilmente il box di base che hai usato non è configurato per consentire il login di root.


Ad esempio, la casella ubuntu14.04 ufficiale non è impostata PermitRootLogin yesin /etc/ssh/sshd_config.

Quindi se vuoi che una casella possa accedere come root di default (solo Vagrantfile, non più lavoro), devi:

  1. Imposta una VM tramite nome utente vagrant(qualunque sia il nome tranne root)

  2. Accedi e modifica il file di configurazione sshd.

    ubuntu: modifica /etc/ssh/sshd_config, imposta PermitRootLogin yes

    altri: ....

    (Uso solo Ubuntu, sentiti libero di aggiungere soluzioni alternative per altre piattaforme)

  3. Costruisci una nuova scatola di base:

    vagrant package --base your-vm-name

    questo crea un file package.box

  4. Aggiungi quella scatola di base a vagabondo:

    vagrant box add ubuntu-root file:///somepath/package.box

    quindi, è necessario utilizzare questa casella di base per creare vm che consenta il login automatico come root.

  5. Distruggi il vm originale di vagrant destroy

  6. Modifica l'originale Vagrantfile, cambia il nome della scatola in ubuntu-roote il nome utente in root, quindi vagrant upcreane uno nuovo.

Mi è costato del tempo per capirlo, è troppo complicato secondo me. Spero che vagabondo possa migliorare questo.


10

Non dimenticare che root è autorizzato a fare il login prima !!!

Inserisci il codice di configurazione di seguito nel /etc/ssh/sshd_configfile.

PermitRootLogin yes

Benvenuto in SO. Aggiungi abbastanza dettagli e contesto alle risposte. Soprattutto quando si risponde a una vecchia domanda con alcune buone risposte
Jayan

questo è stato più utile per me rispetto alla soluzione principale. ssh non ti consente di accedere come root per impostazione predefinita.
bmbigbang

2

Nota: utilizza questo metodo solo per lo sviluppo locale, non è sicuro . Puoi impostare la password e la configurazione ssh durante il provisioning della scatola. Ad esempio con debian/stretch64box questo è il mio script di fornitura:

config.vm.provision "shell", inline: <<-SHELL
    echo -e "vagrant\nvagrant" | passwd root
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    sed -in 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
    service ssh restart
SHELL

Questo imposterà la password di root vagrante consentirà il login di root con password. Se stai usando private_networksay con indirizzo ip 192.168.10.37, puoi ssh conssh root@192.168.10.37

Potrebbe essere necessario modificarlo echoe i sedcomandi a seconda del sshd_configfile predefinito .


1

Aggiungendo questo al file Vagrantfile funzionato per me. Queste righe sono l'equivalente del tuo inserimento sudo su -ogni volta che effettui il login. Si noti che ciò richiede il reprovisioning della VM.

config.vm.provision "shell", inline: <<-SHELL
    echo "sudo su -" >> .bashrc
SHELL

Grazie per la tua soluzione molto semplice! echo "sudo -s" >> .bashrc sarebbe meglio.
Honiix

1

So che questa è una vecchia domanda, ma guardando la domanda originale, sembra che l'utente volesse solo eseguire un comando come root, questo è quello che devo fare quando stavo cercando una risposta e mi sono imbattuto nella domanda.

Quindi questo vale la pena sapere secondo me:

vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"

vagrantè la password che viene ripetuta nel comando sudo, perché come tutti sappiamo, l'account vagabondo ha privilegi sudo e quando si sudo, è necessario specificare la password dell'account utente, non root..e, naturalmente, per impostazione predefinita, il la password dell'utente vagabondo è vagrant!

Per impostazione predefinita, sono necessari i privilegi di root per l'arresto, quindi immagino che eseguire uno spegnimento sia un buon test.

Ovviamente non è necessario specificare un nome di server se ce n'è uno solo per quell'ambiente vagabondo. Inoltre, stiamo parlando della macchina virtuale vagabonda locale all'host, quindi non c'è davvero alcun problema di sicurezza che posso vedere.

Spero che questo ti aiuti.


0

Ho avuto alcuni problemi con il provisioning durante il tentativo di accesso come root, anche con PermitRootLogin yes. L'ho fatto in modo che solo il vagrant sshcomando sia interessato:

# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
  config.ssh.username = 'root'
end

-8
vagrant destroy
vagrant up

Si prega di aggiungere questo al file vagabondo:

config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

Questo non fa nulla poiché l'utente predefinito è già vagabondo .
Jamal

invece di usare config.ssh.username = 'vagrant' .... usa config.ssh.username = 'root' .... questo aiuterà.
Jimmy MG Lim
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.