錯誤原因
vagrant up執行日誌:
vagrant管理了一個官方的keypair, 預先放在box中一個公鑰,私鑰被vagrant管理着。vagrant up的時候,第一次登錄虛擬機就是使用這個官方提供的keypair.
當登錄入虛擬機前,vagrant在宿主機生成一個新的keypair, 然後將虛擬機中的公鑰替換爲新的這個,然後私鑰放在宿主機。
之所以有這個替換公鑰的過程。是爲了安全考慮,如果都使用官方的公鑰,那麼虛擬機可以被其他人登錄。很不安全。
不安全的authorized_keys:
安全的authorized_keys:
當製作box的時候,這個裏面的公鑰已經是安全的那個,所有制作後的box載vagrant ssh的時候自然認證不了。
解決方式
從virtualbox軟件進入虛擬機,雖然認證錯誤,但是虛擬機已經啓動起來了,只是沒有ssh登錄進去,可以通過密碼登錄(用戶:vagrant 密碼:vagrant 但是虛擬機的sshd_config配置不能使用密碼登錄)。
從virtualbox進入虛擬機後,將官網提供的不安全公鑰寫入虛擬機中
另一種是將官網提供的公鑰寫入虛擬機中:
sudo -u vagrant wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys
authorized_keys的權限必須設置成除了屬主vagrant以外,group和其他用戶都不可寫狀態:
chmod go-w /home/vagrant/.ssh/authorized_keys
virtualbox上關閉虛擬機,然後重新打包
vagrant halt
vagrant package --base 在virtual box顯示的虛擬機名字 --output 打包出來的box的名字
vagrant box add 打包出來的box的名字 顯示的box名字
ssh 詳細介紹:
https://www.jianshu.com/p/33461b619d53