Lee*_*ley 8 ssh git github ssh-agent
此查询与 Git 没有直接关系,但由于 Git 支持的传输之一是 SSH,并且我正在尝试使用代理转发,我想我会要求澄清(手册页让我失望)
我正在尝试使用 Capistrano 自动化软件部署,我设法暂停了一些痛点(在部署之前预先播种已知主机等),但我遇到了以下情况。
我的团队以自己的身份登录服务器,个人用户帐户,每个人都在一个developers组中,并且umask是002. 以上都不是真正相关的,只是说目的是确保我的团队始终可以像他们自己一样工作,而无需超级用户特权。
我们example.com使用以下方法连接到服务器~/.ssh/config:
Host example.com
User beaks
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa_business
Run Code Online (Sandbox Code Playgroud)
初始登录工作正常,ssh example.com打开与我的用户帐户的连接,一切正常。
问题出现在下一步,
git ls-remote git@github.com:project/repository.git
Run Code Online (Sandbox Code Playgroud)
这是使用前面提到的 Git+SSH 传输层(见上面的链接) - 通常应该使用我的转发代理密钥(我已经用 验证过env | grep SSH_AUTH_SOCK)
响应是一个简单的“身份验证失败(公钥)另一端意外挂断”,我怀疑是因为当我github.com作为他们的共享git用户接近时,我的用户的代理没有被使用。
我也不能排除EC2怪异(安全策略等) - 但在这种情况下,我会期望超时或连接失败。我非常有信心我正在击球github.com- 而且他们不让我进入,因为我的代理没有beaks为他们的git用户提供我的钥匙。
如果我错过了任何内容,很高兴添加任何其他信息。
仅仅看到 ssh-agent 正在运行是不够的。查看您想要的密钥是否存在ssh-add -L 您是否已验证此密钥在其他主机上是否有效?ssh-add -L在那个系统上打印什么?
您也可以运行GIT_TRACE=1 git ls-remote ...,它会打印它运行的 ssh 命令。您可以手动运行 ssh 命令并在将 git 引入图片之前使其工作。