109

我不想在 vagrant box 上创建新的 SSH 密钥对,而是想重新使用主机上的密钥对,使用代理转发。我尝试在 Vagrantfile 中将config.ssh.forward_agent设置为 TRUE,然后重新启动 VM,并尝试使用:

vagrant ssh -- -A

...但是当我尝试执行 git checkout 时,仍然会提示我输入密码。知道我错过了什么吗?

4

9 回答 9

90

我在 OS X Mountain Lion 上使用 vagrant 2。

Vagrant.configure("2") do |config|
  config.ssh.private_key_path = "~/.ssh/id_rsa"
  config.ssh.forward_agent = true
end
  1. config.ssh.private_key_path是你的本地私钥
  2. 您的私钥必须对本地 ssh-agent 可用。您可以使用 进行检查ssh-add -L,如果未列出,请添加ssh-add ~/.ssh/id_rsa
  3. 不要忘记将您的公钥添加到~/.ssh/authorized_keysVagrant VM 上。您可以复制粘贴或使用ssh-copy-id 之类的工具
于 2013-04-21T03:28:56.193 回答
84

将其添加到 Vagrantfile

Vagrant::Config.run do |config|
   # stuff
   config.ssh.forward_agent = true
end

查看文档

于 2012-08-23T06:10:07.603 回答
20

除了将“config.ssh.forward_agent = true”添加到 vagrant 文件之外,请确保主机已设置为代理转发。Github 对此提供了很好的指导。(查看故障排除部分)。

于 2013-07-26T13:55:11.463 回答
7

我在 1.4.3 上使用了上述回复,但在 1.5 上停止了工作。我现在必须运行ssh-add才能完全使用 1.5。

现在,我将以下行添加到我的 ansible 配置脚本中。 - name: Make sure ssk keys are passed to guest. local_action: command ssh-add

我还创建了我的设置要点:https ://gist.github.com/KyleJamesWalker/9538912

于 2014-03-14T00:53:00.260 回答
5

如果您在 Windows 上,默认情况下 Vagrant 中的 SSH 转发无法正常工作(因为 net-ssh 中的错误)。请参阅此特定的 Vagrant 错误报告:https ://github.com/mitchellh/vagrant/issues/1735

但是,有一个解决方法!只需通过 VagrantFile 中的简单配置脚本将本地 SSH 密钥自动复制到 Vagrant VM。这是一个例子: https ://github.com/mitchellh/vagrant/issues/1735#issuecomment-25640783

于 2014-07-14T19:04:01.990 回答
2

当我们最近在 Vagrant 1.1.5 中试用该vagrant-aws插件时,我们遇到了 SSH 代理转发的问题。事实证明,Vag​​rant 在IdentitiesOnly=yes没有选项的情况下强制将其更改为no. Vagrantfile这迫使 Vagrant 只查看我们在AWS 提供商中列出的私钥。

我在一篇博文中记录了我们的经历。它可能会在某个时候变成拉取请求。

于 2013-04-11T15:03:07.767 回答
1

确保 VM 不会启动自己的 SSH 代理。我有这条线~/.profile

eval `ssh-agent`

删除它后,SSH 代理转发工作。

于 2017-03-15T09:52:25.147 回答
0

真正的问题是 Vagrant 使用 127.0.0.1:2222 作为默认端口转发。可以加一个(不是2222,默认2222已经占用)

config.vm.network “forwarded_port”,来宾:22,主机:2333,host_ip:“0.0.0.0”

“0.0.0.0”是从外部连接请求的方式。然后 ssh -p 2333 vagrant@192.168.2.101 (更改为您自己的主机 IP 地址,dud)将正常工作。谢谢我,就叫我雷锋吧!

于 2015-03-03T22:52:05.213 回答
0

在 Windows 上,问题在于 Vagrant 不知道如何与 git-bash 的 ssh-agent 通信。但是,它确实知道如何使用 PuTTY 的 Pageant。因此,只要 Pageant 正在运行并加载了您的 SSH 密钥,并且只要您设置了 config.ssh.forward_agent,这应该可以工作。

有关详细信息,请参阅此评论

如果您使用 Pageant,则不再需要更新 Vagrantfile 以在 Windows 上复制 SSH 密钥的解决方法。

于 2018-01-15T18:38:44.173 回答