在vagrant guest中使用来自主机的ssh私钥

Tom*_*che 19 vagrant

我想在配置流浪盒时克隆一堆私有git存储库.根据这篇文章,应该可以使用config.ssh.forward_agent = true.但是,当尝试通过类似的东西连接到github ssh -T git@github.com -o StrictHostKeyChecking=no失败时出现以下错误:

警告:永久性地将"github.com,192.30.252.130"(RSA)添加到已知主机列表中.权限被拒绝(publickey).

我将配置减少到最简单的配置.你可以在这里找到它:https://gist.github.com/TomTasche/31f7c45fcffc2997d43a

当我做"vagrant ssh"并再次尝试相同时,会发生类似的错误:

克隆到'private-repositories'...警告:永久性地将IP地址'192.30.252.130'的RSA主机密钥添加到已知主机列表中.权限被拒绝(publickey).致命:远程端意外挂断

编辑:上面链接的配置适用于运行Ubuntu的主机,但既不能在Mac主机上运行,​​也不能在Windows主机上运行.我的目标是使配置适用于所有这三个主机.

Knu*_*nut 31

请检查您的主机系统是否启用了ssh-agent转发.您可以这样做,例如将此块添加到您的~/.ssh/config文件中:

Host                    *
  ForwardAgent          yes 
Run Code Online (Sandbox Code Playgroud)

如果启用vagrant ssh(并且还vagrant provision),则应该能够将密钥转发到来宾计算机.

您还可以使用ssh-add -lssh-agent是否知道您的SSH密钥来检查.如果它在列表中并且您已激活代理转发,则应该会成功.否则,您可以通过运行将密钥添加到ssh-agent ssh-add <path to your key file>.

  • Github强烈推荐这种做法!"警告:您可能想要使用像Host*这样的通配符来将此设置应用于所有SSH连接.这不是一个好主意,因为您将与SSH连接的每个服务器共享本地SSH密钥.他们赢了无法直接访问密钥,但是在建立连接时,他们将能够像您一样使用它们.您应该只添加您信任的服务器以及您打算与代理转发一起使用的服务器." https://developer.github.com/guides/using-ssh-agent-forwarding/ (7认同)
  • 感谢您的回答!按照上面的说明后,我可以通过`vagrant ssh`中的ssh进行身份验证.但是,我的配置脚本仍然失败,并出现以下错误:`从身份验证套接字读取响应长度时出错.权限被拒绝(公钥).` (3认同)
  • 是的,前几天我们在办公室也遇到过这种情况......它在没有实际行动的情况下继续工作......文档说`config.ssh.forward_agent = true`与ssh-agent转发相结合应该可行但是我们没有管理找到它为什么不起作用...:/ (2认同)

小智 6

听起来你可能会遇到这个特殊的错误:https: //github.com/mitchellh/vagrant/issues/1735 (尽管它被"关闭"它实际上并没有修复)

在Windows上,默认情况下,Vagrant中的SSH转发无法正常工作(因为net-ssh中存在错误).

但是,有一种解决方法或简单的黑客攻击.您可以通过VagrantFile中的简单配置脚本将本地SSH密钥自动复制到Vagrant VM.这是一个例子:https: //github.com/mitchellh/vagrant/issues/1735#issuecomment-25640783