我已经在网上搜遍了这个问题,但还是找不出来。我有一个使用VirtualBox运行的Vagrant虚拟机,带有以下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公共网络的IP,并且我成功地在盒子中托管了两个Nginx站点,我可以通过访问Vagrant公共网络的IP从同一网络上的另一台计算机查看。
我的服务器是一台笨重的笔记本电脑,所以我想直接ssh到在它上面运行的Vagrant盒子(从另一台开发机器)。我特别想使用VS Code远程开发工具远程编辑服务器上的文件。当我跑的时候,我也不知道为什么。
ssh vagrant@[IP of Vagrant public network on the server]
它给了我"Permission denied (publickey) "当我尝试在服务器本身和网络上的另一台机器上运行它时,它都会抛出这个问题。
我需要在某处修改一些ssh配置文件吗?
编辑:我读了这篇文章,它建议在客户端机器上的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
这对我不起作用;而不是抛出"Permission denied,"它只是挂起。
明白了。我需要从我的[工作目录]/中获得私钥的副本。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]
并且成功了