多年来,我一直使用vagrant ssh
进入我的VirtualBox/Uubuntu 16.04设置。我最近在默认设置和权限方面遇到了问题,这是一个在网上广泛讨论的问题,所以我开始使用自定义密钥。我已经将公钥粘贴到我的ubuntu盒子VM中的/home/ubuntu/authorized_keys中,并将我的Vagrant文件指向~/.ssh/id_ecdsa.中的私钥
问题是,当我vagrant ssh
时,我得到错误:
vagrant@127.0.0.1: Permission denied (publickey)
我可以连接到:ssh vagrant@127.0.0.1 -p 2222
,但我想再次使用vagrant ssh
。
在启动期间:SSH address: 127.0.0.1:2222
和我可以通过Webstorm和"OpenSSH和身份验证代理"配置连接到它。
§ vagrant ssh-config
Host pfbox
HostName 127.0.0.1
User vagrant
Port 2222
如果我ssh vagrant@127.0.0.1
,我得到消息ssh: connect to host 127.0.0.1 port 22: Connection refused
也许vagrant ssh
正在调用端口22而不是2222?也许我的自定义密钥设置有问题?在网上做了很多研究之后,我迷失了方向。
我使用ssh-keygen -t ecdsa -b 521
创建了OpenSSH在他们的网站上推荐的密钥。我也在rsa中尝试过。
MBP Mojave,Vagrant 2.2.3/VirtualBox 6.0.2。
由于vagrant ssh
正在回复身份验证错误,端口仍在侦听端口2222。
我建议检查默认私钥是否仍然存在并且可读(例如,VirtualBox提供程序的默认私钥是.vagrant/machines/default/virtualbox/private_key
)。
如果是,请检查详细登录(vagrant ssh -- -vv
)。无论如何,如果本地ssh可以工作,那么这意味着在~/.ssh/
文件夹中有一个有效的pkey,所以(例如)vagrant ssh -- -i ~/.ssh/id_rsa
应该可以工作。
Fernando给了我找到答案的工具。非常感谢他!然而,我对这个问题做了很多研究,我想在这里展示什么对解决这个常见问题很重要。这在文档或其他来源中没有很好地涵盖。
1) 详细的诊断非常有用。vagrant ssh -- -vv
2) 在我的流浪文件中,我有这样一行:
pfbox.ssh.private_key_path = ["~/.vagrant.d/insecure_private_key", "~/.ssh/id_ecdsa"]
我使用了更新的密钥格式ecdsa自定义密钥,但我也尝试过rsa。
3) 在主机根级别的同步文件夹中,我有.ssh,里面有两个文件。我将计算机上~/.ssh的公钥信息复制并传递到同步文件夹.ssh目录中的authorized_keys文件中。vagrant ssh
正在检查该文件中的公钥。要创建同步文件夹,请将其添加到您的流浪文件中:
mybox.vm.synced_folder "mydir/", "/home/vagrant"
这会将您的主机工作目录镜像到guest Vagrant服务器中。
在这个设置之后,Vagrant知道私钥和公钥在哪里,并且可以ssh到盒子中。
我从未在Vagrant或相关SO和其他地方看到过一个关键点,那就是私钥必须在主机上,公钥必须在盒子里。这在其他地方可能是众所周知的,但对于我们这些新手来说,这当然是新的关键信息。