如何将 ssh 代理转发与“流浪者 ssh”一起使用



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

vagrant ssh -- -A

。但是当我尝试进行 git 结帐时,我仍然收到密码提示。知道我错过了什么吗?

我在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 代理使用。您可以检查 ssh-add -L ,如果未列出,请添加ssh-add ~/.ssh/id_rsa
  3. 不要忘记将公钥添加到Vagrant VM上的~/.ssh/authorized_keys。您可以通过复制和粘贴或使用 ssh-copy-id 等工具来完成

将其添加到流浪者文件

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

查看文档

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

我在 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中的一个错误)。请参阅此特定流浪者错误报告:https://github.com/mitchellh/vagrant/issues/1735

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

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

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

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

eval `ssh-agent`

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

真正的问题是 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)会工作得很好。谢谢我,叫我雷锋就行了!

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

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

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

最新更新