我正在尝试通过 SSH 从我的 MacBook 连接到 Vagrant 机器。
vagrant ssh
ssh
运行良好,但我想知道为什么当我从 Mac 终端使用时会失败。
以下是它引发的错误:
Raghavendras-MacBook-Pro:~ raghu$ ssh -p 2222 [email protected]
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
答案1
因为您正在发出一个“普通”ssh
命令,因此您尝试使用默认id_rsa
+id_rsa.pub
密钥对登录到虚拟机。
除非您明确地~/.ssh/id_rsa.pub
从 MacBook 添加到VM 上的~/.ssh/accepted_keys
帐户vagrant
,否则 VM 无法识别您的默认密钥对,并且会拒绝您收到的“权限被拒绝”消息。
您可以使用 Vagrant 在创建时创建并注入到机器中的密钥。从项目目录运行以下命令,将其替换<machine_id>
为您在 Vagrantfile 中配置的名称(假设您使用的是 VirtualBox,否则也请更改该部分路径):
ssh -i .vagrant/machines/<machine_id>/virtualbox/private_key -p 2222 [email protected]
答案2
该命令应该可以正常工作,但有时 Vagrant 会更改其转发到本地主机的端口,因此它将无法工作。ssh [email protected] -p 2222
-p 2222
因此,请仔细检查 SSH 正在转发到哪个端口,并使用该端口号。
检查的简单方法是vagrant ssh
从 Vagrant 安装目录,然后在另一个 shell/终端窗口运行以下命令:
ps aux | grep ssh
其中应该有一行准确地显示 SSH 连接是如何建立的,如下所示:
ssh [email protected] -p 2226 -o Compression=yes -o DSAAuthentication=yes -o LogLevel=FATAL -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /path/to/Vagrant/.vagrant/machines/nodejs/virtualbox/private_key
除非您关心无密码访问,否则请忽略该命令的大部分内容。只需注意第一部分:
ssh [email protected] -p 2226
在我的示例中,这就是转发的 SSH 帖子的命令2226
。这在我的情况下是有效的。如果出于某种原因提示您输入密码,请记住默认的 Vagrant 用户是vagrant
,该用户的默认密码是vagrant
...。