Plutôt que d'utiliser ssh sur ma machine virtuelle Vagrant avec un nom d'utilisateur et un mot de passe "vagabonds", j'aimerais utiliser kevin/kevin.
J'ai modifié mon Vagrantfile
pour inclure:
config.ssh.username = "kevin"
Ensuite, j'ai couru vagrant reload
.
La sortie suivante est apparue:
[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.
Cependant, je pouvais toujours ssh sur ma boîte vagabonde en utilisant vagrant/vagrant
, mais je ne pouvais pas ssh sur la boîte avec un nom d'utilisateur et un mot de passe kevin/kevin ou kevin/vagrant.
Notez que j'ai également essayé cette réponse ( https://stackoverflow.com/a/9924122/409976 ), mais je ne pouvais que ssh sur la boîte avec le nom d'utilisateur vagrant
, pas kevin
(même si cela est spécifié dans le Vagrantfile
).
Comment puis-je configurer mon Vagrantfile afin que je puisse ssh en utilisant le nom d'utilisateur kevin
?
Vous pouvez accéder à la boîte en utilisant vagrant
mais PAS kevin
, c'est prévu.
La plupart des boîtiers de base Vagrant n'ont que 2 utilisateurs avec accès SSH, root
et vagrant
. Ils utilisent tous les deux vagrant
comme mot de passe, de plus, vagrant
est configuré pour l'authentification par clé publique en utilisant la paire de clés non sécurisée (pourquoi? Voir non sécurisée par défaut? ) paire de clés fournie dans le projet Vagrant sur GitHub.
Pour pouvoir vous connecter en tant que kevin
, vous devrez ssh dans la boîte et créer l'utilisateur (useradd -m -s /bin/bash -U kevin
) tout d'abord, configurez l'authentification par clé publique (de nombreuses façons, par exemple ssh-copy-id
, Je vous le laisse.)
Vous devriez pouvoir ssh dans la boîte après avoir créé l'utilisateur en utilisant vagrant ssh
si vous définissez correctement config.ssh.username
dans Vagrantfile
.
Bien sûr, vous pouvez manuellement ssh dans la boîte par (supposez NAT est en cours d'utilisation)
ssh -p 2222 kevin@localhost
ou (sous Linux)
ssh -p 2222 -i /opt/vagrant/embedded/gems/gems/vagrant-1.5.1/keys/vagrant.pub vagrant@localhost
Une autre solution, après avoir ajouté un utilisateur à Vagrant via votre script de provisioning:
## 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
ajoutez ceci à votre fichier Vagrant:
VAGRANT_COMMAND = ARGV[0]
if VAGRANT_COMMAND == "ssh"
config.ssh.username = 'kevin'
end
Maintenant, Vagrant utilisera l'utilisateur par défaut vagrant
pour approvisionner votre machine virtuelle, mais une fois qu'il est en place, vous pouvez utiliser le simple vagrant ssh
pour vous connecter en tant que kevin
via la clé ssh Vagrant par défaut.
De cette façon, vous pouvez expédier votre Vagrantfile
souhaité et les utilisateurs disent simplement vagrant up
et kevin
devient automatiquement prêt à l'emploi.
Créez un fichier vagabond comme celui ci-dessous. Notez que nous amorçons l'utilisateur vagabond pour passer immédiatement à l'utilisateur 'kevin' que nous avons créé.
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
maintenant ssh dans le 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$
Un peu de hack, mais vous pouvez ajouter la ligne Sudo su - kevin
à votre fichier .bash_profile et ajoutez kevin au fichier sudoers sans mot de passe.
Cela changera l'utilisateur actuel en kevin lors de la connexion en tant qu'utilisateur vagabond à partir de la ligne de commande.
L'avantage de cette approche est que NAT n'a pas besoin d'être activé.