流浪者ssh正在呼叫22而不是2222?-权限被拒绝(公钥)



多年来,我一直使用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和其他地方看到过一个关键点,那就是私钥必须在主机上,公钥必须在盒子里。这在其他地方可能是众所周知的,但对于我们这些新手来说,这当然是新的关键信息。

最新更新