如何使用ssh agent转发“vagrant ssh”?

时间:2012-08-14 15:18:34

标签: ssh virtualbox forwarding ssh-keys vagrant

我不想在流浪盒上创建新的SSH密钥对,而是想使用agent forwarding重新使用我在主机上的密钥对。我已尝试在Vagrantfile中将config.ssh.forward_agent设置为TRUE,然后重新启动VM,并尝试使用:

vagrant ssh -- -A

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

9 个答案:

答案 0 :(得分:86)

我在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. 不要忘记在Vagrant VM上为~/.ssh/authorized_keys添加公钥。您可以复制粘贴或使用ssh-copy-id
  4. 等工具进行复制粘贴

答案 1 :(得分:81)

将其添加到Vagrantfile

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

http://vagrantup.com/v1/docs/config/ssh/forward_agent.html

答案 2 :(得分:20)

除了将“config.ssh.forward_agent = true”添加到vagrant文​​件之外,还要确保主机设置为代理转发。 Github为此提供good guide。 (查看故障排除部分)。

答案 3 :(得分:6)

我在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

答案 4 :(得分: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

答案 5 :(得分:1)

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

我在a blog post写下了我们的经历。它可能在某些时候变成拉取请求。

答案 6 :(得分:1)

真正的问题是Vagrant使用127.0.0.1:2222作为默认端口转发。 您可以添加一个(默认情况下不会占用2222,2222)

config.vm.network" forwarded_port",guest:22,host:2333,host_ip:" 0.0.0.0"

" 0.0.0.0"是从外部连接请求的方式。 然后 ssh -p 2333 vagrant@192.168.2.101(更改为您自己的主机IP地址,dud) 会工作得很好。 谢谢我,请叫我雷锋!

答案 7 :(得分:0)

确保VM不启动自己的SSH代理。我的~/.profile

中有这一行
eval `ssh-agent`

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

答案 8 :(得分:0)

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

有关详细信息,请参阅this comment

如果您使用Pageant,则不再需要workaround of updating the Vagrantfile to copy SSH keys on Windows