本地 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。