开发测试还是用 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
私钥登录即可
写的不好,仅供参考