homestead ssh 连接失败问题

启动 vagrant 一直报这个错误,说明是连接 ssh 使用的秘钥有问题,可能跟昨天我把虚拟机里的 authorized_keys 删了有关系。

1
2
3
4
5
6
7
default: SSH auth method: private key
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Authentication failure. Retrying...
default: Error: Authentication failure. Retrying...

这种情况需要重新配置 ssh 秘钥,我按照如下步骤解决了问题。

  1. 执行 vagrant ssh-config 查看当前虚拟机的 ssh 配置信息,输出如下

  1. 执行 ssh-keygen -m PEM -t rsa -b 4096 生成 rsa 秘钥,现在默认名称生成的秘钥是以 BEGIN OPENSSH PRIVATE KEY 开头的,与虚拟机上的类型不一致,所以生成时需要带上后面的这些参数
  2. 将生成的私钥复制到第一步的 IdentityFile 标识的私钥文件中,同时也复制到 ~/.vagrant.d/insecure_private_key 文件一份中(不复制也可以,执行 vagrant up 会自动生成)
  3. 复制刚生成本机的公钥,使用用户名密码登录到虚拟机,将公钥添加到虚拟的 authorized_keys 文件中。homestead 虚拟机的用户名和密码都是 vagrant
  4. 最后执行 vagrant reload --provision 重新配置虚拟机即可

直接执行这个命令应该就能解决这个问题:vagrant ssh -c "echo 'your_public_key' >> ~/.ssh/authorized_keys" ,将本机公钥写入到 homestead。