it-swarm.com.de

vagrant login standardmäßig als root

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

Frage: Wie kann ich vagrant ssh standardmäßig den root-Benutzer verwenden?

Version: vagrant 1.6.5

76
Mike D

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

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

Wenn Sie fortan vagrant ssh sind, melden Sie sich als root an und sollten Folgendes 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-Jun-2015: Dies funktioniert auch für Version 1.7.2. Die Schlüsselsicherheit 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 zur Verwendung für eine Box bestimmt, die ohne geeignete Sicherheitsmaßnahmen vor der Veröffentlichung öffentlich zugänglich ist.

Referenz:

98
Mike D

Das ist nützlich:

Sudo passwd root

für jeden, der von der Notwendigkeit, ein Root-Passwort in vagrant zu setzen, erwischt wurde

108
Ed Williams

Dies funktioniert, wenn Sie sich in 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 bequem, einen eigenen alternativen Benutzernamen zu erstellen:

adduser johndoe

Warten Sie, bis Sie zur Eingabe eines Kennworts aufgefordert werden.

27
Thyag

Wenn Vagrantfile wie folgt:

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

Aber Vagrant fragt Sie immer noch nach dem Root-Passwort.... Höchstwahrscheinlich ist die von Ihnen verwendete Basisbox nicht für die Root-Anmeldung konfiguriert.


Zum Beispiel kann das offizielle Feld ubuntu14.04 nicht PermitRootLogin yes in /etc/ssh/sshd_config gesetzt werden.

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

  1. Einrichten einer virtuellen Maschine mit dem Benutzernamen vagrant (beliebiger Name außer root)

  2. Loggen Sie sich ein und bearbeiten Sie die sshd-Konfigurationsdatei.

    ubuntu: edit /etc/ssh/sshd_config, setze PermitRootLogin yes

    andere: ....

    (Ich verwende nur Ubuntu. Sie können gerne andere Workarounds verwenden.)

  3. Baue eine neue Basisbox:

    vagrant package --base your-vm-name
    

    erstellen Sie eine Datei package.box

  4. Fügen Sie diese Grundbox zu vagrant hinzu:

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

    dann müssen Sie dieses Basisfeld verwenden, um vm zu erstellen, das die automatische Anmeldung als root zulässt.

  5. Zerstöre Original-VM durch vagrant destroy

  6. Bearbeiten Sie das Original Vagrantfile, ändern Sie den Feldnamen in ubuntu-root und den Benutzernamen in root und erstellen Sie dann ein neues vagrant up.

Es hat mich einige Zeit gekostet, es herauszufinden, es ist meiner Meinung nach zu kompliziert. Hope Vagrant würde das verbessern.

10
Mithril

Vergessen Sie nicht, dass root angemeldet ist, bevor root sich einloggen kann !!!

Platzieren Sie den Konfigurationscode unten in /etc/ssh/sshd_config-Datei.

PermitRootLogin yes
7
Andrew Coding

Ich weiß, dass dies eine alte Frage ist, aber wenn man sich die ursprüngliche Frage ansieht, sieht es so aus, als ob der Benutzer nur einen Befehl als root ausführen wollte. Das ist es, was ich tun muss, wenn ich nach einer Antwort gesucht habe und über die Frage gestolpert bin. 

Daher ist dieser meiner Meinung nach wissenswert:

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

vagrant ist das Passwort, das im Sudo-Befehl wiedergegeben wird, denn wie wir alle wissen, verfügt das Vagrant-Konto über Sudo-Berechtigungen. Wenn Sie Sudo verwenden, müssen Sie das Passwort des Benutzerkontos angeben, nicht root .. und natürlich standardmäßig. Das Passwort des Vagrant-Benutzers lautet vagrant!

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

Natürlich müssen Sie keinen Servernamen angeben, wenn es nur einen Namen für diese Vagabundumgebung gibt. Wir sprechen auch von lokalen virtuellen Maschinen mit dem Host, so dass es keine Sicherheitslücke gibt, die ich sehen kann.

Hoffe das hilft.

1
Chris Barnett

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 Befehl vagrant ssh betroffen ist:

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

Das Hinzufügen zur Vagrantfile hat für mich funktioniert. Diese Zeilen entsprechen der Eingabe von Sudo su - bei jeder Anmeldung. Bitte beachten Sie, dass dies eine erneute Bereitstellung der VM erfordert.

config.vm.provision "Shell", inline: <<-Shell
    echo "Sudo su -" >> .bashrc
Shell
0
fpereiro