而不是使用" vagrant" ssh-ing到我的Vagrant虚拟机上。用户名和密码,我想使用kevin / kevin。
我修改了Vagrantfile
以包含:
config.ssh.username = "kevin"
然后,我跑了vagrant reload
。
以下输出显示:
[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.
然而,我仍然可以使用vagrant/vagrant
ssh到我的流浪盒上,但是我无法用一个用户名和密码kevin / kevin或kevin / vagrant ssh到盒子上。
请注意,我也尝试了这个答案(https://stackoverflow.com/a/9924122/409976),但我只能使用用户名vagrant
而不是kevin
ssh到框中(即使它已经过了在Vagrantfile
)中指定。
如何配置我的Vagrant文件以便我可以使用用户名kevin
进行ssh?
答案 0 :(得分:51)
您可以使用vagrant
但不是kevin
ssh到该框,这是预期的。
大多数Vagrant基本框只有2个具有SSH访问权限的用户root
和vagrant
。它们都使用vagrant
作为密码,此外,vagrant
配置为使用GitHub上Vagrant项目中提供的不安全(为什么?请参阅Vagrant insecure by default?)密钥对进行公钥认证。
为了能够以kevin
身份登录,您必须首先打开框并创建用户(useradd -m -s /bin/bash -U kevin
),配置公钥身份验证(许多方式,例如ssh-copy-id
,我会留给你的。)
如果您在vagrant ssh
中正确设置config.ssh.username
,则应该可以在使用Vagrantfile
创建用户后进入框中。
当然你可以手动ssh到框中(假设NAT正在使用中)
ssh -p 2222 kevin@localhost
或(在Linux上)
ssh -p 2222 -i /opt/vagrant/embedded/gems/gems/vagrant-1.5.1/keys/vagrant.pub vagrant@localhost
答案 1 :(得分:19)
通过您的配置脚本将用户添加到Vagrant之后的另一个解决方案:
## 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
将此添加到您的Vagrant文件中:
VAGRANT_COMMAND = ARGV[0]
if VAGRANT_COMMAND == "ssh"
config.ssh.username = 'kevin'
end
现在,Vagrant将使用默认vagrant
用户来配置您的VM,但一旦启动,您可以使用简单的vagrant ssh
通过默认的Vagrant ssh-key登录为kevin
。< / p>
通过这种方式,您可以发送所需的Vagrantfile
,用户只需说vagrant up
,kevin
即可自动使用。
答案 2 :(得分:2)
创建如下所示的流浪文件。请注意,我们正在引导vagrant用户立即更改为我们创建的'kevin'用户。
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
现在ssh进入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$
答案 3 :(得分:1)
有点黑客攻击,但您可以将行sudo su - kevin
添加到.bash_profile文件中,并添加kevin到没有密码的sudoers文件。
当从命令行以vagrant用户身份登录时,这会将当前用户更改为kevin。
这种方法的优点是不需要启用NAT。
答案 4 :(得分:0)
我找到了一种简单的方法来实现这一点,方法是将 .ssh 复制给用户,例如您的用户名是 alice
sudo su -
cp -r /home/vagrant/.ssh/ /home/alice/
chown -R alice:alice /home/alice/.ssh
然后在 Vagrantfile 中添加配置:
# ...
config.ssh.username = 'alice'
# ...