无法通过 SSH 进入 Vagrant 虚拟机

无法通过 SSH 进入 Vagrant 虚拟机

本地 Vagrant 机器安装在10.0.0.23具有主机名的IP 地址上lamp-vm

使用vagrant ssh命令,我可以很好地连接并完成我需要的一切。

这会产生错误

$ ssh vagrant@lamp-vm-v-v

debug1:连接到地址 10.0.0.23 端口 22:连接超时
ssh:连接到主机 lamp-vm 端口 22:连接超时

我的/etc/hosts文件包含10.0.0.23 lamp-vm

我的 .ssh/config 文件如下所示

主机 lamp-vm
用户 vagrant
身份文件 ~/.ssh/vagrant

-i /path/to/.sh/identity_file我也 尝试过带有和不带有的 ssh 命令。

如何使用 SSH 连接到我的 Vagrant 虚拟机?

答案1

它很旧,但是由于没有答案,我会提供一个。命令:

vagrant ssh

相当于

ssh vagrant@localhost -p 2222 -i .vagrant/machines/default/virtualbox/private_key

如果您适当地更改了某些内容,则这是默认行为。首先,Vagrant 将在您的客户机上创建 vagrant 用户,您将使用该用户进行 ssh。正如之前所说,默认情况下,它会将流量从主机上的端口 2222 转发到客户机上的端口 22(当您使用 vagrant up 时,您会看到显示该消息)。最后,Vagrant 为 ssh 会话创建密钥,这样您就不必这样做了,因此您需要在通过 ssh 连接时提供公钥作为参数。

答案2

我也遇到了这个问题,这是我的最终配置,允许我从主机的任何地方 ssh 进入我的 vagrant 机器。

Vagrant文​​件:

...
# Setting up private_network to have virtual host
config.vm.network :private_network, ip: "192.168.33.10"

# Enable ssh forward agent
config.ssh.forward_agent = true
...

ssh 进入机器:

ssh [email protected]

系统将提示您输入密码(默认为 vagrant):

[email protected]'s password:

轰隆隆,您成功了!

PS* 您也可以在主机的任何地方使用 scp:

scp /path/to/src/file [email protected]:/path/to/destination/file

答案3

此行为是设计使然。

Vagrant 使用VirtualBox NAT 模式这意味着使用端口转发。

您不能使用 NAT 模式直接通过 SSH 连接到您的 VM。

使用“vagrant ssh”意味着 vagrant 将为您进行端口转发,因此您不必担心。我认为默认情况下它会连接到端口 2222 上的本地主机,但它也会尝试解决任何端口号冲突。

如果您需要直接通过 SSH 连接到您的 VM,请将 VM 切换到仅主机或桥接网络模式。

答案4

Windows / Vagrant / Ubuntu

这是对我有用的方法,您可以通过在 ssh 客户端上运行它来快速确定它是否有效。

ssh [email protected] -p 2222 -v

将把-v它置于详细模式并显示调试信息......

$ ssh [email protected] -p 2222 -v
OpenSSH_7.1p1, OpenSSL 1.0.2e 3 Dec 2015
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 2222.
debug1: Connection established.
debug1: identity file /home/Jamie/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/Jamie/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/Jamie/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/Jamie/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/Jamie/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/Jamie/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/Jamie/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/Jamie/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Authenticating to 127.0.0.1:2222 as 'vagrant'
debug1: SSH2_MSG_KEXINIT sent
Connection closed by 127.0.0.1

所以...SSH2_MSG_KEXINIT意味着正在交换密钥。这很快就会失败...

在这种情况下,我删除了我的密钥并在虚拟机上重新生成了它们。(http://ask.xmodulo.com/sshd-error-could-not-load-host-key.html

$ ls -al /etc/ssh/ssh*key
$ sudo rm -r /etc/ssh/ssh*key
$ sudo dpkg-reconfigure openssh-server

一旦我的密钥重新生成,我就可以通过 SSH 进入我的 Vagrant Box。

相关内容