上午在办公室打包了一个Ubuntu14.04+PHP7+Mysql5.7+Apache2.4的box,吃完晚饭按部就班地导入到MBP里继续写代码,结果就在私钥认证时出现了:

default: Warning: Remote connection disconnect. Retrying...
default: Warning: Connection reset. Retrying...

删除box,删除Virtualbox中对应的虚拟机然后重新导入,继续启动,报错:

default: Warning: Authentication failure. Retrying..

结束进程后,vagrant ssh进去,发现可以用账号密码登陆,那么应该时密钥配对出现了问题。那么就删除本地私钥和服务器上的公钥重新生成一对新的应该能解决问题。

删除本地私钥

要删除私钥,首先得知道vagrant的私钥存放在哪里,使用这条命令 vagrant ssh-config 可以查看本地SSH配置信息,里面有私钥路径:

Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/BuShou/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL

去目录/Users/BuShou/.vagrant.d/删除insecure_private_key文件。
返回开发目录重启虚拟机vagrant reload,重启回重新生成私钥,重启过程依然提示:default: Warning: Authentication failure. Retrying..

重新生成虚拟机公钥

vagrant ssh进入虚拟机,因为认证失败,需要手动输入密码vagrant
进入虚拟机之后,进入vagrant共享目录(ubuntu下在/home/vagrant/),重新下载公钥:

cd /home/vagrant
sudo -u vagrant wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O .ssh/authorized_keys
sudo -u vagrant chmod 700 .ssh
sudo -u vagrant chmod 600 .ssh/authorized_keys
sudo -u vagrant chown -R vagrant:vagrant .ssh

重启虚拟机
vagrant reload,问题解决。

标签: ubuntu, vagrant, SSH

分享到: