我试图在我的流浪者环境中默认vm以root用户身份登录。我无法控制的代码必须以root身份运行,并且无法使用sudo运行(文件专门复制到/ root等)。我遇到的问题是,在运行配置代码之前,vagrant似乎尝试以root用户身份登录(将公钥复制到/root/.ssh/authorized_keys文件中)。
我在vagrantfile中有这一行:
config.ssh.username = 'root'
当我运行vagrant up(干净环境,所以vm刚刚下载)我最终得到了这个:
centos64: SSH username: root
centos64: SSH auth method: private key
centos64: Warning: Connection timeout. Retrying...
centos64: Warning: Authentication failure. Retrying...
centos64: Warning: Authentication failure. Retrying...
如果我ctrl-c出了这个(或者让它最终超时),很明显提供代码:
config.vm.provision "shell" do |s|
s.path = 'provision.sh'
end
这样做:
mkdir /root/.ssh
touch /root/.ssh/authorized_keys
cat /home/vagrant/.ssh/authorized_keys >> /root/.ssh/authorized_keys
尚未参加。
但是,如果我注释掉这一行:
#config.ssh.username = 'root'
然后,运行vagrant(再次,从头开始下载vm的干净安装),一切都开始了。然后我取消注释该行,并再次运行vagrant,我可以以root身份运行,我可以看到提供代码确实已经运行(从第一个流出来)并且我的密钥在authorized_keys文件中。
所以,我的问题是:如何在配置设置之前运行配置代码,告诉它使用root登录?