尝试从同一网络上的第二台机器通过 SSH 访问 Vagrant public 网络 IP 时出现权限被拒绝消息

Permission denied message when attempting ssh to Vagrant public network IP from second machine on same network

为了这个我已经在网上搜遍了,还是想不通。我有一个使用 VirtualBox 的 Vagrant VM 运行ning,具有以下 Vagrantfile:

Vagrant.configure("2") do |config|
     config.vm.box = "ubuntu/xenial64"
     config.vm.network "public_network"

     config.vm.provider "virtualbox" do |vb|
          vb.memory = "1024"
          vb.gui = true
     end
end

Vagrant 启动成功,我可以 运行 vagrant ssh 成功进入盒子。我可以查看 Vagrant public 网络的 IP,并且我在框中成功托管了两个 Nginx 站点,我可以通过访问 Vagrant [=30] 的 IP 从同一网络上的不同计算机查看它们=] 网络.

我的服务器是一台笨重的笔记本电脑,所以我想通过 ssh 直接进入 运行 上面的 Vagrant box(来自不同的开发机器)。我特别想使用 VS Code 远程开发工具远程编辑服务器上的文件。当我 运行

时,我一辈子都想不通为什么
ssh vagrant@[IP of Vagrant public network on the server]

它给我“权限被拒绝(public密钥)。”当我尝试在服务器本身和网络上的另一台机器上 运行 它时,它都会抛出这个问题。

我需要修改某个 ssh 配置文件吗?

编辑:我阅读了 this 文章,该文章建议在客户端计算机上的 ssh 配置文件中添加如下内容:

    Host 192.168.100.100 <- Vagrant box network IP
      StrictHostKeyChecking no
      UserKnownHostsFile /dev/null
      IdentitiesOnly yes
      User vagrant
      IdentityFile /your/user/directory/.vagrant.d/insecure_private_key
      PasswordAuthentication no

这对我不起作用;而不是抛出“权限被拒绝”,它只是挂起。

想通了。我需要我服务器上 [working dir]/.vagrant/machines/default/virtualbox/private_key 文件中的私钥副本。一旦我将它 scp 到我的辅助机器上,我将它作为 IdentityFile 传递给 ssh:

ssh -I [location of copied private_key file] vagrant@[IP of Vagrant public network on the server]

成功了。