这个查询与 Git 没有直接关系,但由于 Git 支持的传输之一是 SSH,而且我正在尝试使用代理转发,所以我想我会要求澄清(手册页让我失望了)
我正在尝试使用 Capistrano 自动化软件部署,我已设法暂停一些痛点(在部署之前预先播种已知主机等),但我面临以下情况。
我的团队以自己的身份登录服务器,个人用户帐户,每个人都在一个developers
组中,并且umask
是002
。以上内容都不是真正相关的,只是说目的是确保我的团队始终可以以自己的身份工作,而不需要超级用户权限。
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