无法 SSH 进入新安装的 13.04 Vagrant

无法 SSH 进入新安装的 13.04 Vagrant

我使用了 13.04 版的 Vagrant 镜像http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box创建一个新的虚拟机并尝试使用 ssh 连接到它。但是,SSH 总是立即断开连接,甚至没有进入尝试进行身份验证的阶段。

我在 VirtualBox GUI 中打开了虚拟机,并查看了 SSH 日志文件 (auth.log)。它充满了这样的行:

Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: fatal: No supported key exchange algorithms [preauth]

通过执行以下命令解决了该问题:

sudo ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N '' -t ecdsa
sudo ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa
sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa

我认为这些应该在某个时候自动运行,特别是考虑到(a)当我从 ISO 映像安装 Ubuntu 时我不必自己运行它们,以及(b)因为 Vagrant 应该被设计为在运行之后你vagrant up可以立即使用 VM 而无需任何额外的配置。

在不久的将来,我可能需要创建大量的虚拟机,我希望可以使用 Vagrant 来完成这项工作,但如果我必须手动修复每个虚拟机上的 SSH,我就无法做到这一点。

有人知道为什么会发生这种情况吗?可以做些什么来修复它?我应该将其报告为错误吗?

答案1

这是 SSH 主机密钥问题(与公钥认证无关)。

/etc/ssh/看起来问题在于 ubuntu cloud vagrant 映像在第一次启动( )期间未能生成新的主机密钥(如果它们不在) vagrant up

除了手动生成 Moshe 提到的 SSH 主机密钥之外

sudo ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N '' -t ecdsa
sudo ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa
sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa

也可以通过在 /etc/rc.local

test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server

希望能帮助到你。

答案2

解决方法:

  • 在 VirtualBox 中导入 ~/.vagrant.d/boxes/raring/box.ovf 设备

    VBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
    
  • 获取虚拟机名称

    VBoxManage list vms
    
  • 启动虚拟机

    VBoxManage startvm ubuntu-cloudimg-raring-vagrant-amd64
    
  • 在 /etc/rc.local 中包含以下行(当然是在 VM 本身中!):

    test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
    
  • 关闭虚拟机

    sudo halt
    
  • 删除旧图像

    rm ~/.vagrant.d/boxes/raring/box.ovf ~/.vagrant.d/boxes/raring/box-disk1.vmdk
    
  • 以 .ovf 格式导出虚拟机

    VBoxManage export ubuntu-cloudimg-raring-vagrant-amd64 --output ~/.vagrant.d/boxes/raring/box.ovf
    

完毕 :)

还提交了一个错误报告:https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1217950

答案3

这似乎是旧版基础盒的一个错误。在当前基础盒图像(2013 年 8 月 20 日生成)中,密钥似乎是在盒首次启动时自动创建的。

相关内容