无法通过 ssh 进入 13.04 的新 Vagrant 安装

Mos*_*atz 9 ssh vagrant

我使用来自http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box 的13.04 的 Vagrant 映像来创建一个新的虚拟机并尝试连接到它使用 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]
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ter*_*ang 5

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

看起来问题是 ubuntu 云 vagrant 映像/etc/ssh/在第一次启动 ( 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
Run Code Online (Sandbox Code Playgroud)

也可以通过添加以下命令来完成 /etc/rc.local

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

希望能帮助到你。


小智 5

解决方法:

完毕 :)

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


Mos*_*atz 3

这似乎是较旧的底座盒中的一个错误。在当前的基本盒子映像(2013 年 8 月 20 日生成)中,密钥似乎是在盒子第一次启动时自动创建的。