如何将SSH代理转发与“无用SSH”一起使用?


107

与其在一个无所事事的盒子上创建新的SSH密钥对,不如我想使用代理转发来重用主机上的密钥对。我尝试在Vagrantfile中将config.ssh.forward_agent设置为TRUE,然后重新启动VM,并尝试使用:

vagrant ssh -- -A

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


如果您没有正确的ssh密钥,则git不应询问密码,而是告诉您您已拒绝权限。我猜您被要求输入密码是因为您是从https而不是git@github.com(ssh)克隆的。我的2美分。
alexserver

Answers:


89

我正在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_keys在Vagrant VM上添加您的公钥。您可以复制粘贴或使用ssh-copy-id之类的工具进行复制

8
我注意到在完成上述设置后,可以使用“无用”用户来“ git clone”,但是不能使用“ root”用户来“ git clone”。您知道似乎是什么问题吗?谢谢
Nam Nguyen

7
config.ssh.private_key_path = "~/.ssh/id_rsa"让Vagrant坚持不懈Waiting for VM to boot
apennebaker 2014年

14
您还需要保留无所事事的插入密钥config.ssh.private_key_path = [ '~/.vagrant.d/insecure_private_key', '~/.ssh/id_rsa' ]
Calin

3
在OS X上,我发现可以将私钥添加到OS X密钥链中ssh-add -K(以及config.ssh.forward_agent = true)。看到这个答案
Flimm 2015年

2
我和@apennebaker遇到了相同的错误。然后执行Calin建议的步骤无济于事...对我有用的是从主机OS向密钥链添加密钥并禁用config.ssh.private_key_path分配。
alexserver

80

将其添加到Vagrantfile

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

查看文件


11
确保在基础主机上使用ssh-add并且密钥已解密。
EnabrenTane 2012年

1
请注意,Windows不会自动启动ssh-agent,您需要先运行它才能转发ssh密钥。请按照本指南在Windows上设置ssh-agent自动启动。
nebffa 2014年

62
这个答案可能不应该得到那么多的选票。OP明确指出它们已添加config.ssh.forward_agent到配置文件中,那么此答案提供了哪些新信息?甚至链接已经在问题中。
Trindaz 2014年

7
@Trindaz,您完全正确。我无法解释为什么这是我最受欢迎的答案之一。但这似乎帮助了至少52个人,所以我必须称其为胜利。
EnabrenTane 2014年

1
这个答案确实并没有带来任何新信息,但另一方面,这是为Vagrant配置的机器需要配置的所有内容。至少要在连接机器上正确设置了代理转发(即,转发可用于其他非无用机器)。
techraf 2015年

20

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


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


我一直必须使用1.4和1.5的ssh-add,否则将没有正在运行的代理要转发
iheggie 2014年


2

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

我在博客文章中写下了我们的经验。在某些时候它可能会变成请求请求。


2
有没有一种在创建时自动将主机上的底层公共密钥复制到Vagrant VM的方法Vagrant up?现在,我必须创建计算机,手动登录,然后将我的公钥添加到/home/vagrant/.ssh/authorized_keys
Noah


0

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

config.vm.network“转发端口”,访客:22,主机:2333,主机IP:“ 0.0.0.0”

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.