无法通过 SSH 连接到 Vagrant VM(不使用 vagrant ssh)第 2 部分

问题描述 投票:0回答:3

这是之前的问题的后续问题。我使用了相同的 Vagrantfile,但注释掉了我认为不必要的两行。

我正在尝试在不使用

vagrant ssh
的情况下通过 ssh 进入我的 Vagrant 盒子。以下是我的 Vagrantfile 和 ssh 配置信息:

流浪者文件:

Vagrant.configure(2) do |config|

  config.vm.provider "virtualbox" do |v|
    v.memory = 6144
    v.cpus = 2
    v.name = "mb_vagrant"
  end

  config.vm.box = "ubuntu/trusty64"

  config.vm.network :private_network, ip: "192.168.33.10"

  config.ssh.forward_agent = true

  # config.vm.provision :shell, path: "bootstrap.sh"
  # config.vm.network :forwarded_port, host: 8001, guest: 8001

end

vagrant ssh-config
的输出:

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile "/Users/mbigras/Google Drive/tmp/chef-repo/.vagrant/machines/default/virtualbox/private_key"
  IdentitiesOnly yes
  LogLevel FATAL
  ForwardAgent yes

我尝试使用以下命令

ssh
进入我的机器:

$ ssh -i "/Users/mbigras/Google Drive/tmp/chef-repo/.vagrant/machines/default/virtualbox/private_key" -p 2222 [email protected]
ssh: connect to host 192.168.33.10 port 2222: Connection refused

另外,根据另一个答案中描述的解决方案,我在尝试连接之前尝试删除

~/.ssh/known_hosts
;但是,它也不起作用:

$ rm ~/.ssh/known_hosts
$ ssh -i "/Users/mbigras/Google Drive/tmp/chef-repo/.vagrant/machines/default/virtualbox/private_key" -p 2222 [email protected]
ssh: connect to host 192.168.33.10 port 2222: Connection refused

我在这里缺少什么?

linux ssh vagrant
3个回答
7
投票

Ssh 服务绑定到主机的(即:127.0.0.1)端口2222,但在虚拟机(来宾机)中仍在侦听端口 22(作为默认端口)。 因此,您应该连接到 192.168.33.10 上的端口 22127.0.0.1 上的 2222。即:

$ ssh -i "<vagranfile-path>/.vagrant/machines/default/virtualbox/private_key" \
-p 22 [email protected]

$ ssh -i "<vagranfile-path>/.vagrant/machines/default/virtualbox/private_key" \
-p 2222 [email protected]

此外,不需要删除

~/.ssh/known_hosts
文件。添加以下选项将避免主机指纹检查:
-o UserKnownHostsFile=/dev/null


0
投票

像这样设置 vagrantfile 的端口转发部分:

  # using a specific IP.
    config.vm.network "private_network", ip: "192.168.56.101"
    config.vm.network "forwarded_port", guest: 22, host: 2290

这将允许“正常”ssh 进入访客,而无需通过 vagrant ssh


0
投票

顺便说一句,如果有人陷入 wsl 提示符并进行测试而不是使用 vagrant-ssh 命令,那么你可以简单地使用 eth0 绑定的 IP 地址,你可以使用

ip route
找到它,然后你可以插入在你的 ssh 命令的 ip 中,你应该没有问题,所以我的 ip 路由输出是:

default via 172.19.192.1 dev eth0 proto kernel
172.19.192.0/20 dev eth0 proto kernel scope link src 172.19.197.225

所以只需使用

172.19.192.1
而不是
127.0.0.1

ssh [email protected] -p 2222 -i ".\vagrant\<path>"

© www.soinside.com 2019 - 2024. All rights reserved.