通过不同的用户名进行代理转发(Git 和部署)

通过不同的用户名进行代理转发(Git 和部署)

这个查询与 Git 没有直接关系,但由于 Git 支持的传输之一是 SSH,而且我正在尝试使用代理转发,所以我想我会要求澄清(手册页让我失望了)

我正在尝试使用 Capistrano 自动化软件部署,我已设法暂停一些痛点(在部署之前预先播种已知主机等),但我面临以下情况。

我的团队以自己的身份登录服务器,个人用户帐户,每个人都在一个developers组中,并且umask002。以上内容都不是真正相关的,只是说目的是确保我的团队始终可以以自己的身份工作,而不需要超级用户权限。

example.com我们使用以下命令连接到服务器~/.ssh/config

Host example.com
  User beaks
  ForwardAgent yes
  IdentityFile ~/.ssh/id_rsa_business

初始登录运行正常,ssh example.com打开了与我的用户帐户的连接,并且一切正常。

问题出现在下一步,

git ls-remote [email protected]:project/repository.git

这是使用前面提到的 Git+SSH 传输层(参见上面的链接) - 并且通常应该使用我的转发代理密钥(我已经验证过它存在env | grep SSH_AUTH_SOCK

github.com响应是一个简单的“身份验证失败(公钥)另一端意外挂断”,我怀疑是因为当我以共享用户身份接近时,我的用户的代理未被使用git

我也不能排除EC2怪异的情况(安全策略等)——但在那种情况下,我本以为会出现超时或连接失败。我非常有信心我成功了github.com——但他们不让我进去,因为我的代理没有向他们的用户提供我的beaks密钥git

如果我遗漏了任何内容,我很乐意添加任何其他信息。

答案1

仅仅看到 ssh-agent 正在运行是不够的。查看您想要的密钥是否存在。ssh-add -L 您是否已验证此密钥在其他主机上有效?ssh-add -L该系统上打印了什么?

您还可以运行GIT_TRACE=1 git ls-remote ...,它会打印它运行的 ssh 命令。您可以手动运行 ssh 命令并使其正常工作,然后再引入 git。

答案2

实际上没有人回答这个问题因此,来这里的人可能会从看到我对类似问题的回答中受益。https://superuser.com/a/1141035/3376

相关内容