我使用来自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,我就无法做到。
有谁知道为什么会发生这种情况以及可以做些什么来解决它?我应该将其报告为错误吗?
这是 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
解决方法:
在 VirtualBox 中导入 ~/.vagrant.d/boxes/raring/box.ovf 设备
VBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
Run Code Online (Sandbox Code Playgroud)获取虚拟机名称
VBoxManage list vms
Run Code Online (Sandbox Code Playgroud)启动虚拟机
VBoxManage startvm ubuntu-cloudimg-raring-vagrant-amd64
Run Code Online (Sandbox Code Playgroud)在 /etc/rc.local 中包含以下行(当然在 VM 本身中!):
test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
Run Code Online (Sandbox Code Playgroud)关闭虚拟机
sudo halt
Run Code Online (Sandbox Code Playgroud)删除旧图像
rm ~/.vagrant.d/boxes/raring/box.ovf ~/.vagrant.d/boxes/raring/box-disk1.vmdk
Run Code Online (Sandbox Code Playgroud)以 .ovf 格式导出 VM
VBoxManage export ubuntu-cloudimg-raring-vagrant-amd64 --output ~/.vagrant.d/boxes/raring/box.ovf
Run Code Online (Sandbox Code Playgroud)完毕 :)
还有一个错误报告:https : //bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1217950
归档时间: |
|
查看次数: |
7875 次 |
最近记录: |