从 Mac 到 Vagrant 机器的 SSH

从 Mac 到 Vagrant 机器的 SSH

我正在尝试通过 SSH 从我的 MacBook 连接到 Vagrant 机器。

vagrant sshssh运行良好,但我想知道为什么当我从 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...。

相关内容