run - SSH en Vagrant Box con diferente nombre de usuario
vagrant up (4)
En lugar de irrumpir en mi máquina virtual Vagrant con un nombre de usuario y contraseña "vagos", me gustaría usar kevin / kevin.
Vagrantfile
mi Vagrantfile
para incluir:
config.ssh.username = "kevin"
Luego, ejecuté la vagrant reload
.
El siguiente resultado apareció:
[default] Waiting for machine to boot. This may take a few minutes...
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period. This can
mean a number of things.
Sin embargo, todavía podía entrar en mi caja vagabundo usando vagrant/vagrant
, pero no podía entrar en la caja con un nombre de usuario y contraseña de kevin / kevin o kevin / vagabundo.
Tenga en cuenta que también probé esta respuesta ( https://stackoverflow.com/a/9924122/409976 ), pero solo pude ingresar al cuadro con el nombre de usuario vagrant
, no kevin
(aunque esté especificado en el Vagrantfile
).
¿Cómo puedo configurar mi Vagrantfile para que pueda ssh usando el nombre de usuario kevin
?
Crea un archivo vago como el siguiente. Tenga en cuenta que estamos iniciando el usuario vagabundo para cambiar inmediatamente al usuario ''kevin'' que creamos.
bootstrap = <<SCRIPT
useradd -m kevin --groups sudo
su -c "printf ''cd /home/kevin/nsudo su kevin'' >> .bash_profile" -s /bin/sh vagrant
SCRIPT
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-16.04"
config.vm.host_name = "kevin"
config.vm.provision "shell", inline: "#{bootstrap}", privileged: true
end
ahora ssh en el vm:
$ vagrant ssh
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-83-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
0 packages can be updated.
0 updates are security updates.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
kevin@kevin:/home/vagrant$
Otra solución, después de agregar al usuario a Vagrant a través de su secuencia de comandos de suministro:
## add kevin
useradd -m -s /bin/bash -U kevin -u 666 --groups wheel
cp -pr /home/vagrant/.ssh /home/kevin/
chown -R kevin:kevin /home/kevin
echo "%kevin ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/kevin
agregue esto a su archivo de Vagrant:
VAGRANT_COMMAND = ARGV[0]
if VAGRANT_COMMAND == "ssh"
config.ssh.username = ''kevin''
end
Ahora Vagrant usará el usuario vagrant
predeterminado para aprovisionar su máquina virtual, pero una vez que esté activo, puede usar vagrant ssh
simple para iniciar sesión como kevin
través de ssh-key Vagrant predeterminado.
De esta forma puede enviar su Vagrantfile
deseado y los usuarios solo pueden decir vagrant up
y kevin
automáticamente se vuelve listo para usar.
Puedes ver la caja usando vagrant
pero NO kevin
, eso es lo que se espera.
La mayoría de las cajas base Vagrant solo tienen 2 usuarios con acceso SSH, root
y vagrant
. Ambos usan vagrant
como contraseña, además, el vagrant
está configurado para la autenticación de clave pública utilizando el par de claves inseguro (¿por qué? Ver Vagrant inseguridad de forma predeterminada? ) Proporcionado en el proyecto Vagrant en GitHub.
Para poder iniciar sesión como kevin
, deberá ingresar al cuadro y crear el usuario ( useradd -m -s /bin/bash -U kevin
) primero, configure la autenticación de clave pública (muchas maneras, por ejemplo, ssh-copy-id
, Lo dejo en tus manos.)
Debería poder ingresar al cuadro después de crear el usuario que utiliza vagrant ssh
si establece apropiadamente config.ssh.username
en Vagrantfile
.
Por supuesto, puede ingresar ssh manualmente en el cuadro (suponga que NAT está en uso)
ssh -p 2222 kevin@localhost
o (en Linux)
ssh -p 2222 -i /opt/vagrant/embedded/gems/gems/vagrant-1.5.1/keys/vagrant.pub vagrant@localhost
Un poco de hack, pero podrías agregar la línea sudo su - kevin
a tu archivo .bash_profile y agregar kevin al archivo sudoers sin contraseña.
Esto cambiará el usuario actual a kevin cuando inicie sesión como el usuario vagabundo desde la línea de comando.
La ventaja de este enfoque es que NAT no necesita estar habilitado.