与其在一个无所事事的盒子上创建新的SSH密钥对,不如我想使用代理转发来重用主机上的密钥对。我尝试在Vagrantfile中将config.ssh.forward_agent设置为TRUE,然后重新启动VM,并尝试使用:
vagrant ssh -- -A
...但是当我尝试进行git checkout时,仍然会提示我输入密码。知道我缺少什么吗?
与其在一个无所事事的盒子上创建新的SSH密钥对,不如我想使用代理转发来重用主机上的密钥对。我尝试在Vagrantfile中将config.ssh.forward_agent设置为TRUE,然后重新启动VM,并尝试使用:
vagrant ssh -- -A
...但是当我尝试进行git checkout时,仍然会提示我输入密码。知道我缺少什么吗?
Answers:
我正在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
config.ssh.private_key_path
是您的本地私钥ssh-add -L
,如果未列出,请使用添加ssh-add ~/.ssh/id_rsa
~/.ssh/authorized_keys
在Vagrant VM上添加您的公钥。您可以复制粘贴或使用ssh-copy-id之类的工具进行复制config.ssh.private_key_path = "~/.ssh/id_rsa"
让Vagrant坚持不懈Waiting for VM to boot
。
config.ssh.private_key_path = [ '~/.vagrant.d/insecure_private_key', '~/.ssh/id_rsa' ]
config.ssh.forward_agent
到配置文件中,那么此答案提供了哪些新信息?甚至链接已经在问题中。
在上面对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
如果您使用的是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
确保虚拟机未启动其自己的SSH代理。我的这条线~/.profile
eval `ssh-agent`
删除后,SSH代理转发起作用。
在Windows上,问题在于Vagrant不知道如何与git-bash的ssh-agent通信。但是,它确实知道如何使用PuTTY的Pageant。因此,只要Pageant正在运行并且已经加载了SSH密钥,并且只要您设置了config.ssh.forward_agent,它就可以正常工作。
有关详细信息,请参见此评论。
如果使用Pageant,则不再需要更新Vagrantfile以在Windows上复制SSH密钥的解决方法。