无法SSH到13.04的新Vagrant安装中


9

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

我在VirtualBox GUI中打开了VM,然后查看了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,则无法这样做。

有谁知道为什么会这样,怎么办才能解决?我应该将其报告为错误吗?


您是否vagrant在主机上安装了最新版本?如何打开无用调试并查看发生了什么?vagrant ssh使用流浪者的不安全密钥对进行发布密钥身份验证。
Terry Wang

是的,这是最新的流浪汉。请注意,我的问题不是流浪者密钥对,而是未设置SSH服务器的计算机密钥。如果SSH服务器没有机器密钥,则无法连接到它。
Moshe Katz

我只是尝试了一个新的12.10 VM,然后发生了同样的事情。
Moshe Katz

抱歉,没有仔细阅读问题。我是sshd主机密钥问题,不是公钥身份验证。看起来在第一次启动期间,Ubuntu云映像无法生成新的主机密钥(如果未找到)。可以通过test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server或使用ssh-keygen生成密钥来完成。
Terry Wang

应该有test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server/etc/rc.local脚本。
Terry Wang

Answers:


5

这是SSH主机密钥问题(与公共密钥身份验证无关)。

看起来问题出/etc/ssh/在第一次引导(vagrant up)期间ubuntu云无用的镜像无法生成新的主机密钥(如果它们不存在)。

除了手动生成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

希望能帮助到你。


1
这是一个临时解决方案,但是我们不应该将其报告为该映像中的错误吗?是否应该已经预先生成所有密钥?
Radek Simko

5

工作方式:

  • 在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格式导出VM

    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日生成)中,键在第一次启动时似乎是自动创建的。


我现在(再次)遇到此错误,在@ S0me0ne的错误报告中似乎其他人也是如此。我在/ etc / ssh中确认密钥文件不存在。这是使用9月24日的图片。
马尔维姆

好的,他们刚刚发布了另一批“批次”计算机(自2013年9月28日起),它们可以正确创建丢失的密钥。我可以通过使用VBoxManage导入框来验证这一点。奇怪的是,当我使用“ vagrant up”时,文件不存在!直接导入VB和使用流浪汉之间有区别吗?
马尔维姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.