inicio de sesión vagabundo como root por defecto


92

Problema: con frecuencia, el primer comando que escribo en mis casillas es su -.

Pregunta: ¿cómo puedo vagrant sshutilizar el usuario root de forma predeterminada?

Versión: vagrant 1.6.5


Stack Overflow es un sitio para preguntas de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte ¿Qué temas puedo preguntar aquí en el Centro de ayuda? Quizás Super User o Unix & Linux Stack Exchange sería un mejor lugar para preguntar. Consulte también ¿Dónde publico preguntas sobre Dev Ops?
jww

Respuestas:


141

Esto es útil:

sudo passwd root

para cualquiera que haya sido atrapado por la necesidad de establecer una contraseña de root en vagrant primero


1
Salvó mi vida. ¿Sabes si esto tiene alguna repercusión en la forma en que actúa el vagabundo?
Matt

1
La lección aquí es que si crea una caja base, siga las convenciones sugeridas por Hashicorp y configure su contraseña raíz en 'vagabundo'. ver docs.vagrantup.com/v2/boxes/base.html
Mike D

Sin embargo, ¿hay algún problema de seguridad potencial con un servidor que tiene una contraseña de root muy fácil de adivinar en su computadora personal? Imagino que la configuración de la red ayuda con esto, pero me pregunto.
Nathan Basanese

1
gracias por la pista. Resulta que las cajas vagabundas de Ubuntu establecen una contraseña aleatoria para el usuario raíz (consulte groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Por lo que siempre se debe establecer una contraseña de root primero.
asmaier

Gracias, realmente necesitaba esto
ka_lin

110

Solución:
agregue lo siguiente a su Vagrantfile:

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

En lo vagrant sshsucesivo, iniciará sesión como rooty debe esperar lo siguiente:

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

Actualización 23-Jun-2015: esto también funciona para la versión 1.7.2. La seguridad de las claves ha mejorado desde la versión 1.7.0; esta técnica anula el método anterior que usa una clave privada conocida. Esta solución no está destinada a ser utilizada para una caja que sea accesible públicamente sin las medidas de seguridad adecuadas antes de la publicación.

Referencia:


¿Podría haber alguna razón para que se le solicite la contraseña cuando se ejecuta vagrant ssh? (después de realizar los cambios descritos) Vagrant versión 1.7.2
roign

@RobertIgnat posiblemente necesite configurar su contraseña de root para que coincida con lo que tiene en su config.ssh.passwordvalor. debería poder comentar las config.ssh.*líneas recién agregadas para acceder a su caja y luego cambiar la contraseña de root a través de sudo passwd root.
Mike D

11
Para una máquina que ya ha sido aprovisionada, haga lo anterior y hágalomkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez

2
no funciona para una nueva instalación de Vagrant, probablemente porque cuando uno usa, por ejemplo, ubuntu / xenial, TIENE que usar los inicios de sesión de usuario horneados allí. (ver también stackoverflow.com/a/40478402/605463 )
axd

1
Para cualquier otra persona que utilice centos/7: Este cuadro establece una contraseña de root aleatoria; uno puede vagrant sshy luego sudo sua la raíz, pero (por lo que puedo decir) la configuración de configuración no funciona en un nuevo vagrant upuso de esta máquina virtual.
mhulse

35

Esto funciona si estás en ubuntu / trusty64 box:

vagrant ssh

Una vez que esté en el cuadro de ubuntu:

sudo su

Ahora eres usuario root. Puede actualizar la contraseña de root como se muestra a continuación:

sudo -i
passwd

Ahora edite la siguiente línea en el archivo /etc/ssh/sshd_config

PermitRootLogin yes

Además, es conveniente crear su propio nombre de usuario alternativo:

adduser johndoe

Espere hasta que le pida la contraseña.


12

Si es Vagrantfilecomo a continuación:

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

Pero vagrant todavía le pide la contraseña de root, lo más probable es que el cuadro base que utilizó no esté configurado para permitir el inicio de sesión de root.


Por ejemplo, el cuadro oficial ubuntu14.04 no se establece PermitRootLogin yesen /etc/ssh/sshd_config.

Entonces, si desea que un cuadro pueda iniciar sesión como root predeterminado (solo Vagrantfile, no más trabajo), debe:

  1. Configurar una máquina virtual por nombre de usuario vagrant(cualquier nombre excepto root)

  2. Inicie sesión y edite el archivo de configuración sshd.

    ubuntu: editar /etc/ssh/sshd_config, establecer PermitRootLogin yes

    otros: ....

    (Solo uso ubuntu, siéntase libre de agregar una solución alternativa de otras plataformas)

  3. Construye una nueva caja base:

    vagrant package --base your-vm-name

    esto crea un archivo package.box

  4. Agrega esa caja base a vagabundo:

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

    luego, necesita usar este cuadro base para construir vm que permita el inicio de sesión automático como root.

  5. Destruye vm original por vagrant destroy

  6. Edite el original Vagrantfile, cambie el nombre del cuadro a ubuntu-rooty el nombre de usuario a root, luego vagrant upcree uno nuevo.

Me costó algo de tiempo averiguarlo, en mi opinión es demasiado complicado. Hope vagrant mejoraría esto.


10

¡No olvide que root puede iniciar sesión antes!

Coloque el código de configuración a continuación en el /etc/ssh/sshd_configarchivo.

PermitRootLogin yes

Bienvenido a SO. Agregue suficientes detalles y contexto a las respuestas. Especialmente cuando se responde a preguntas antiguas con buenas respuestas
Jayan

esto fue más útil para mí que la solución principal. ssh no le permite iniciar sesión como root de forma predeterminada.
bmbigbang

2

Nota: Utilice este método solo para el desarrollo local, no es seguro . Puede configurar la contraseña y la configuración ssh mientras aprovisiona la caja. Por ejemplo, con el debian/stretch64cuadro este es mi script de provisión:

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

Esto establecerá la contraseña de root vagranty permitirá el inicio de sesión de root con contraseña. Si está utilizando private_networkdecir con la dirección IP 192.168.10.37, puede ssh conssh root@192.168.10.37

Es posible que deba cambiar eso echoy los sedcomandos según el sshd_configarchivo predeterminado .


1

Agregar esto al Vagrantfiletrabajo para mí. Estas líneas son el equivalente a que ingrese sudo su -cada vez que inicie sesión. Tenga en cuenta que esto requiere reaprovisionar la máquina virtual.

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

¡Gracias por tu sencilla solución! echo "sudo -s" >> .bashrc sería mejor.
Honiix

1

Sé que esta es una pregunta antigua, pero mirando la pregunta original, parece que el usuario solo quería ejecutar un comando como root, eso es lo que necesito hacer cuando estaba buscando una respuesta y me encontré con la pregunta.

Entonces este vale la pena conocerlo en mi opinión:

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

vagrantes la contraseña que se repite en el comando sudo, porque como todos sabemos, la cuenta vagabunda tiene privilegios sudo y cuando sudo, debe especificar la contraseña de la cuenta de usuario, no root ... y por supuesto, de forma predeterminada, la La contraseña del usuario vagabundo es vagrant!

De forma predeterminada, necesita privilegios de root para apagar, así que supongo que hacer un apagado es una buena prueba.

Obviamente, no necesita especificar un nombre de servidor si solo hay uno para ese entorno vagabundo. Además, estamos hablando de una máquina virtual vagabunda local para el host, por lo que realmente no hay ningún problema de seguridad que pueda ver.

Espero que esto ayude.


0

Tuve algunos problemas con el aprovisionamiento al intentar iniciar sesión como root, incluso con PermitRootLogin yes. Lo hice de modo que solo el vagrant sshcomando se vea afectado:

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

-8
vagrant destroy
vagrant up

Agregue esto al archivo vagabundo:

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

Esto no hace nada ya que el usuario predeterminado ya es vagabundo .
Jamal

en lugar de usar config.ssh.username = 'vagrant' .... use config.ssh.username = 'root' .... esto ayudará.
Jimmy MG Lim
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.