1. 制作box的虚拟机准备
防止制作box后,无法使用vagrant ssh登陆虚拟机.
虚拟机内部执行 用户vagrant在用户目录执行
#!/bin/bash
# 1. 下载官方公钥
wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub && echo "1. vagrant.pub下载完成"
# 2. 重命名authorized_keys,移动到.ssh文件下
mv vagrant.pub .ssh/authorized_keys && echo "2. 重命名为authorized_keys"
# 3. 修改authorized_keys文件权限 除了属主vagrant以外,group和其他用户都不可写
chmod go-w /home/vagrant/.ssh/authorized_keys && echo "3. 修改authorized_keys权限完成"
cat .ssh/authorized_keys
echo "证书设置完毕,可以关机制作镜像了"
或者
#!/bin/bash
# 1. 官方公钥
cat > /home/vagrant/.ssh/authorized_keys <<EOF
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
EOF
echo "1. 生成authorized_keys"
# 2. 修改authorized_keys文件权限 除了属主vagrant以外,group和其他用户都不可写
chmod go-w /home/vagrant/.ssh/authorized_keys && echo "2. 修改authorized_keys权限完成"
cat /home/vagrant/.ssh/authorized_keys
echo "证书设置完毕,可以关机制作镜像了"
2. 退出后制作
制作步骤如下:
vagrant halt
vagrant package --base 在virtual box显示的虚拟机名字 --output 打包出来的box的名字
vagrant box add 显示的box名字 打包出来的box的名字
举个例子
vagrant halt
2. vagrant package --base package_package_1532475921979_95515 --output centos7-docker-golang.box
vagrant box add centos7-docker-golang.box centos7-docker-golang.box
已经存在重名的box
覆盖之前的box(–force)