我从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,则无法这样做。
有谁知道为什么会这样,怎么办才能解决?我应该将其报告为错误吗?
test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
或使用ssh-keygen
生成密钥来完成。
test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
在/etc/rc.local
脚本。
vagrant
在主机上安装了最新版本?如何打开无用调试并查看发生了什么?vagrant ssh
使用流浪者的不安全密钥对进行发布密钥身份验证。