Vagrant Login als Root standardmäßig


91

Problem: Häufig lautet der erste Befehl, den ich in meine Boxen eingebe su -.

Frage: Wie verwende ich vagrant sshden Root-Benutzer standardmäßig?

Version: vagrant 1.6.5


Stack Overflow ist eine Site für Programmier- und Entwicklungsfragen. Diese Frage scheint nicht zum Thema zu gehören, da es nicht um Programmierung oder Entwicklung geht. Siehe Welche Themen kann ich hier in der Hilfe erfragen? Vielleicht ist Super User oder Unix & Linux Stack Exchange ein besserer Ort, um zu fragen. Siehe auch Wo poste ich Fragen zu Dev Ops?
JWW

Antworten:


140

Das ist nützlich:

sudo passwd root

für alle, die von der Notwendigkeit überrascht wurden, zuerst ein Root-Passwort in vagrant festzulegen


1
Hat mein Leben gerettet. Wissen Sie, ob dies Auswirkungen darauf hat, wie sich Vagabunden verhalten?
Matt

1
Die Lektion hier lautet: Wenn Sie eine Basisbox erstellen, befolgen Sie die von Hashicorp vorgeschlagenen Konventionen und setzen Sie Ihren Root-Pass auf "vagrant". siehe docs.vagrantup.com/v2/boxes/base.html
Mike D

Gibt es potenzielle Sicherheitsprobleme mit einem Server, auf dessen PC ein wirklich leicht zu erratendes Root-Passwort liegt? Ich stelle mir vor, dass die Netzwerkeinstellungen dabei helfen, aber ich frage mich.
Nathan Basanese

1
Danke für den Hinweis. Es stellt sich heraus, dass Ubuntus Vagrant-Boxen ein zufälliges Passwort für den Root-Benutzer festlegen (siehe groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Man muss also immer zuerst ein Root-Passwort festlegen.
Asmaier

Danke, brauchte das wirklich
ka_lin

110

Lösung:
Fügen Sie Folgendes hinzu Vagrantfile:

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

Wenn Sie sich vagrant sshfortan anmelden, rootsollten Sie Folgendes erwarten und erwarten:

==> 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!

Update 23.06.2015: Dies funktioniert auch für Version 1.7.2. Die Tastensicherheit hat sich seit 1.7.0 verbessert. Diese Technik überschreibt die vorherige Methode, bei der ein bekannter privater Schlüssel verwendet wird. Diese Lösung ist nicht für eine Box vorgesehen, die öffentlich zugänglich ist, ohne dass vor der Veröffentlichung geeignete Sicherheitsmaßnahmen getroffen wurden.

Referenz:


Könnte es einen Grund geben, die Passwortabfrage beim Ausführen zu erhalten vagrant ssh? (nach den beschriebenen Änderungen) Vagrant Version 1.7.2
Roign

@RobertIgnat möglicherweise, dass Sie Ihr root passwd so einstellen müssen, dass es mit dem übereinstimmt, was Sie in Ihrem config.ssh.passwordWert haben. Sie sollten in der Lage sein, die neu hinzugefügten config.ssh.*Zeilen zu kommentieren, um auf Ihre Box zuzugreifen, und dann das Root-Passwort über zu ändern sudo passwd root.
Mike D

11
Führen Sie für eine Maschine, die bereits bereitgestellt wurde, die oben genannten mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez,

2
funktioniert nicht für eine neue Vagrant-Installation, wahrscheinlich weil man, wenn man zB Ubuntu / Xenial verwendet, die dort gebackenen Benutzeranmeldungen verwenden muss. (Siehe auch stackoverflow.com/a/40478402/605463 )
Axd

1
Für alle anderen centos/7Benutzer: In diesem Feld wird ein zufälliges Root-Passwort festgelegt. man kann vagrant sshund dann sudo surooten, aber (soweit ich das beurteilen kann) funktionieren die Konfigurationseinstellungen auf einer neuen vagrant upmit dieser VM nicht.
Mhulse

35

Dies funktioniert, wenn Sie sich auf einer Ubuntu / Trusty64-Box befinden:

vagrant ssh

Sobald Sie in der Ubuntu-Box sind:

sudo su

Jetzt sind Sie Root-Benutzer. Sie können das Root-Passwort wie folgt aktualisieren:

sudo -i
passwd

Bearbeiten Sie nun die folgende Zeile in der Datei /etc/ssh/sshd_config

PermitRootLogin yes

Es ist auch praktisch, einen eigenen alternativen Benutzernamen zu erstellen:

adduser johndoe

Warten Sie, bis Sie nach dem Passwort gefragt werden.


12

Wenn Vagrantfilewie unten:

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

Vagrant fragt Sie jedoch weiterhin nach dem Root-Passwort. Wahrscheinlich ist die von Ihnen verwendete Basisbox nicht so konfiguriert, dass die Root-Anmeldung zulässig ist.


Zum Beispiel, die offizielle ubuntu14.04 Box nicht gesetzt PermitRootLogin yesin /etc/ssh/sshd_config.

Wenn Sie also möchten, dass sich eine Box als Root-Standard anmeldet (nur Vagrantfile, keine Arbeit mehr), müssen Sie:

  1. Richten Sie eine VM nach Benutzername ein vagrant(welcher Name auch immer, aber root)

  2. Melden Sie sich an und bearbeiten Sie die sshd-Konfigurationsdatei.

    ubuntu: bearbeiten /etc/ssh/sshd_config, einstellen PermitRootLogin yes

    Andere: ....

    (Ich benutze nur Ubuntu, zögern Sie nicht, eine Problemumgehung für andere Plattformen hinzuzufügen.)

  3. Erstellen Sie eine neue Basisbox:

    vagrant package --base your-vm-name

    Dadurch wird eine Datei erstellt package.box

  4. Fügen Sie diese Basisbox dem Landstreicher hinzu:

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

    Dann müssen Sie diese Basisbox verwenden, um VM zu erstellen, die die automatische Anmeldung als Root ermöglichen.

  5. Zerstöre das Original-VM von vagrant destroy

  6. Bearbeiten Sie das Original Vagrantfile, ändern Sie den Boxnamen in ubuntu-rootund den Benutzernamen in rootund vagrant uperstellen Sie dann einen neuen.

Es hat mich einige Zeit gekostet, es herauszufinden, es ist meiner Meinung nach zu kompliziert. Hoffe, Vagabund würde dies verbessern.


10

Vergessen Sie nicht, dass root sich vorher anmelden darf !!!

Fügen Sie den Konfigurationscode unten in die /etc/ssh/sshd_configDatei ein.

PermitRootLogin yes

Willkommen bei SO. Bitte fügen Sie den Antworten genügend Details und Kontext hinzu. Besonders wenn alte Fragen mit einigen guten Antworten beantwortet werden
Jayan

Das war für mich nützlicher als die Hauptlösung. Mit ssh können Sie sich standardmäßig nicht als root anmelden.
Bmbigbang

1

Dies zu dem hinzuzufügen, das Vagrantfilefür mich gearbeitet hat. Diese Zeilen entsprechen Ihrer Eingabe bei sudo su -jeder Anmeldung. Bitte beachten Sie, dass hierfür eine erneute Bereitstellung der VM erforderlich ist.

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

Vielen Dank für Ihre sehr einfache Lösung! echo "sudo -s" >> .bashrc wäre besser.
Honiix

1

Ich weiß, dass dies eine alte Frage ist, aber wenn ich mir die ursprüngliche Frage anschaue, sieht es so aus, als wollte der Benutzer nur einen Befehl als root ausführen. Das muss ich tun, als ich nach einer Antwort suchte und über die Frage stolperte.

Dieser ist meiner Meinung nach wissenswert:

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

vagrantWird das Kennwort in den Befehl sudo übernommen, da das Vagrant-Konto bekanntlich über sudo-Berechtigungen verfügt und Sie bei sudo das Kennwort des Benutzerkontos und nicht root angeben müssen Das Passwort des vagabundierenden Benutzers lautet vagrant!

Standardmäßig benötigen Sie Root-Berechtigungen zum Herunterfahren, daher ist das Herunterfahren ein guter Test.

Offensichtlich müssen Sie keinen Servernamen angeben, wenn es nur einen für diese vagabundierende Umgebung gibt. Außerdem sprechen wir mit dem Host über eine lokale vagabundierende virtuelle Maschine, sodass ich keine Sicherheitsprobleme sehen kann.

Hoffe das hilft.


1

Hinweis: Verwenden Sie diese Methode nur für die lokale Entwicklung, sie ist nicht sicher . Sie können das Kennwort und die SSH-Konfiguration einrichten, während Sie die Box bereitstellen. Zum Beispiel mit debian/stretch64Box ist dies mein Bereitstellungsskript:

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

Dadurch wird das Root-Passwort auf gesetzt vagrantund die Root-Anmeldung mit dem Passwort ermöglicht. Wenn Sie private_networksay mit IP-Adresse verwenden 192.168.10.37, können Sie mit sshssh root@192.168.10.37

Möglicherweise müssen Sie dies echound die sedBefehle abhängig von der Standarddatei ändern sshd_config.


0

Ich hatte einige Probleme mit der Bereitstellung, als ich versuchte, mich als root anzumelden, auch mit PermitRootLogin yes. Ich habe es so gemacht, dass nur der vagrant sshBefehl betroffen ist:

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

-8
vagrant destroy
vagrant up

Bitte fügen Sie dies zur Vagabunddatei hinzu:

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

Dies führt zu nichts, da der Standardbenutzer bereits vagabundierend ist .
Jamal

Anstatt config.ssh.username = 'vagrant' zu verwenden, verwenden Sie config.ssh.username = 'root'. Dies wird helfen.
Jimmy MG Lim
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.