如何使用ssh agent转发"vagrant ssh"?

Mat*_* V. 103 ssh virtualbox forwarding ssh-keys vagrant

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

vagrant ssh -- -A
Run Code Online (Sandbox Code Playgroud)

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

Lui*_*lli 87

我在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
Run Code Online (Sandbox Code Playgroud)
  1. config.ssh.private_key_path 是您的本地私钥
  2. 您的私钥必须可供本地ssh-agent使用.您可以查看ssh-add -L,如果未列出,请添加ssh-add ~/.ssh/id_rsa
  3. 不要忘记~/.ssh/authorized_keys在Vagrant VM上添加公钥.您可以复制粘贴或使用ssh-copy-id之类的工具

  • 你还需要保持vagrant insercure键`config.ssh.private_key_path = ['〜/ .vagrant.d/insecure_private_key','〜/ .ssh/id_rsa']` (14认同)
  • 我注意到,在我上面设置之后,我可以使用"vagrant"用户来"git clone"但我不能使用"root"用户来"git clone".你知道什么似乎是问题吗?谢谢 (8认同)
  • `config.ssh.private_key_path ="〜/ .ssh/id_rsa"`让Vagrant挂起`等待VM启动`. (4认同)
  • 在OS X上,我发现使用`ssh-add -K`工作(以及`config.ssh.forward_agent = true`)将私钥添加到OS X密钥链.[见这个答案](http://stackoverflow.com/a/11673152/247696) (3认同)
  • 我得到了与@apennebaker相同的错误.并按照Calin建议的步骤没有帮助......对我来说有用的是从主机操作系统添加钥匙串的密钥并禁用config.ssh.private_key_path分配. (2认同)

Ena*_*ane 81

将其添加到Vagrantfile

Vagrant::Config.run do |config|
   # stuff
   config.ssh.forward_agent = true
end
Run Code Online (Sandbox Code Playgroud)

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

  • 这个答案可能不值得这么多票.OP明确表示他们将`config.ssh.forward_agent`添加到他们的配置文件中,那么这个答案提供了哪些新信息?即使是链接已经存在问题. (59认同)
  • 确保在底层主机上添加ssh-add并解密密钥. (11认同)
  • @Trindaz你说得对.我无法解释为什么这是我最受欢迎的答案之一.然而,这似乎帮助了至少52人,所以我不得不称之为胜利. (7认同)

小智 20

除了将"config.ssh.forward_agent = true"添加到vagrant文​​件之外,还要确保主机设置为代理转发.Github 为此提供了一个很好的指南.(查看故障排除部分).


Kyl*_*ker 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


小智 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