开发测试还是用 root 账号方便

分析

vagrant 默认是使用 vagrant 用户免密登录的,所以只要把 vagrant 用户免密登录的公钥拷贝到 root 用户下就可以了

创建虚拟机创建成功后执行的脚本

在 Vagrantfile 目录下创建 setup.sh

#!/bin/bash

#安装 expect 用于切换 root 用户
sudo yum install -y expect

#创建拷贝 authorized_keys 脚本
sh_str="#!/bin/sh\ndata=\$(cat /home/vagrant/.ssh/authorized_keys)\nmkdir -p /root/.ssh\necho \${data} > /root/.ssh/authorized_keys"
sudo echo -e ${sh_str} > /home/vagrant/root.sh
sudo chmod +x /home/vagrant/root.sh

#切换到 root 用户执行拷贝 authorized_keys
expect -c "
spawn su root
expect \"Password:\"
send \"vagrant\n\"
expect "#"
send \"sh /home/vagrant/root.sh\n\"
expect "#"
send \"rm -f /home/vagrant/root.sh\n\"
"

配置 Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.0"

Vagrant.configure(2) do |config|
    # 配置创建成功后执行的脚本(只在第一次创建成功后执行),以上省略
    config.vm.provision "shell", path: "./setup.sh"
end

root 用户免密登录

使用 .vagrant\machines\default\virtualbox\private_key 私钥登录即可

写的不好,仅供参考