Problem: Häufig lautet der erste Befehl, den ich in meine Boxen eingebe su -
.
Frage: Wie verwende ich vagrant ssh
den Root-Benutzer standardmäßig?
Version: vagrant 1.6.5
Problem: Häufig lautet der erste Befehl, den ich in meine Boxen eingebe su -
.
Frage: Wie verwende ich vagrant ssh
den Root-Benutzer standardmäßig?
Version: vagrant 1.6.5
Antworten:
Das ist nützlich:
sudo passwd root
für alle, die von der Notwendigkeit überrascht wurden, zuerst ein Root-Passwort in vagrant festzulegen
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 ssh
fortan anmelden, root
sollten 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:
vagrant ssh
? (nach den beschriebenen Änderungen) Vagrant Version 1.7.2
config.ssh.password
Wert 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
.
mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
centos/7
Benutzer: In diesem Feld wird ein zufälliges Root-Passwort festgelegt. man kann vagrant ssh
und dann sudo su
rooten, aber (soweit ich das beurteilen kann) funktionieren die Konfigurationseinstellungen auf einer neuen vagrant up
mit dieser VM nicht.
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.
Wenn Vagrantfile
wie 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 yes
in /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:
Richten Sie eine VM nach Benutzername ein vagrant
(welcher Name auch immer, aber root)
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.)
Erstellen Sie eine neue Basisbox:
vagrant package --base your-vm-name
Dadurch wird eine Datei erstellt package.box
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.
Zerstöre das Original-VM von vagrant destroy
Bearbeiten Sie das Original Vagrantfile
, ändern Sie den Boxnamen in ubuntu-root
und den Benutzernamen in root
und vagrant up
erstellen 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.
Vergessen Sie nicht, dass root sich vorher anmelden darf !!!
Fügen Sie den Konfigurationscode unten in die /etc/ssh/sshd_config
Datei ein.
PermitRootLogin yes
Dies zu dem hinzuzufügen, das Vagrantfile
fü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
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"
vagrant
Wird 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.
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/stretch64
Box 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 vagrant
und die Root-Anmeldung mit dem Passwort ermöglicht. Wenn Sie private_network
say mit IP-Adresse verwenden 192.168.10.37
, können Sie mit sshssh root@192.168.10.37
Möglicherweise müssen Sie dies echo
und die sed
Befehle abhängig von der Standarddatei ändern sshd_config
.
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 ssh
Befehl betroffen ist:
# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
config.ssh.username = 'root'
end
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'