Vagrant-如何让配置代码在config.ssh.username='root'之前运行?

Vagrant-如何让配置代码在config.ssh.username='root'之前运行?,vagrant,Vagrant,我正在尝试默认我的vagrant环境中的vm以root用户身份登录。我无法控制的代码必须以root用户身份运行,并且不能使用sudo文件运行。这些文件专门复制到/root等。。我遇到的问题是,vagrant似乎试图在运行将公钥复制到/root/.ssh/authorized_keys文件的配置代码之前以root用户身份登录 我的档案里有一行: config.ssh.username = 'root' 当我运行vagrant up clean env时,vm是新下载的,我最终得到以下结果: ce

我正在尝试默认我的vagrant环境中的vm以root用户身份登录。我无法控制的代码必须以root用户身份运行,并且不能使用sudo文件运行。这些文件专门复制到/root等。。我遇到的问题是,vagrant似乎试图在运行将公钥复制到/root/.ssh/authorized_keys文件的配置代码之前以root用户身份登录

我的档案里有一行:

config.ssh.username = 'root'
当我运行vagrant up clean env时,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 up,我可以以root身份使用ssh,我可以看到从第一次运行vagrant up时就已经运行了提供代码,并且我的密钥在authorized_keys文件中


因此,我的问题是:在配置设置告诉它使用root登录之前,如何运行配置代码?

作为一种解决方法,我想我只需将vagrant密钥放在box映像上的/root/.ssh/authorized_users文件中,然后使用该.box文件。