vagrant package 有两种方式,一种基于虚拟机名字的,一种基于vagratfile的。
对于自己安装的虚拟机,如果已经在使用privatekey的方式在登录了,那么package的时候,虽然该privatekey也能被打包,但是会认为该privatekey是打包的人提供的,不够安全,所以,会认为
正确的打包方式:
- 基于Vagrantfile打包,Vagrantfile中不要设置privatekey_path ,而是设置config.ssh.username 和 config.ssh.password ,并且虚拟机是开机状态
- vagrant package –vagrantfile Vagrantfile –output my.box
此时,会自动生成一套全新的秘钥对,并且注入到虚拟机内,如下:
 - 然后自动关机并打包
(尽管如此,使用同一个box的人使用的秘钥不还是一样的吗?不还是不安全的吗?暂且不管这么多了,至少每次启动新的虚拟机都能正常进入并完成初始设置)
使用该box启动新的虚拟机:
可见,该虚拟机有自己的private_key了
就算打包的时候没有重新生成privatekey,如果在创建虚拟机的vagrantfile中指定了ssh的用户名密码,在启动虚拟机的时候,也能自动删掉不安全的privatekey,并且自动写入一个新生成的privatekey,如下:
查看ssh-config:
可见,私钥写在了自己的目录下了(但是,这里还证明不了pubkey确实从guest中移除了,至少现在在guest中有两个pubkey)
如果在vagrant up的时候,由于某种原因没有能Insert一个安全的密码,在问题解决后,即使是在vagrant halt,如果发现存在不安全的key,也会即使更新能安全的key的:
关键点: 每次打包的时候,vagrantfile中指定用户名和密码
privatekey是否安全似乎是根据privatekey文件名判断的,后来打包的时候也没有重新生成privatekey
正解:
关键是,折腾了好几天,原来的镜像又好使了,啥问题没发现,xxx
注: virtualbox的动态磁盘一旦被撑大就回不去了,打包后的vbox,压缩也压缩不了