【问题标题】:using ssh agent forwarding to clone git repo使用 ssh 代理转发克隆 git repo
【发布时间】:2018-09-14 09:57:05
【问题描述】:

我有一个私有 github 存储库,我想在 EC2 实例中进行克隆。从我的本地计算机上,我通过私钥访问它(所以我可以只使用我的密钥而不是密码来克隆、拉取、推送)。 我不想将我的密钥存储在 EC2 实例上,因为我不会是唯一一个访问它的人。 我正在尝试使用 ssg-agent 转发来做到这一点。 我已将密钥添加到本地计算机中的代理,然后使用以下命令登录 EC2 实例:

ssh -A ec2-user@instanceip

但是当我尝试执行 git clone 时,它​​仍然会提示我输入用户名和密码。 我已经更改了 ec2 实例中的 ssh 配置以允许代理转发,并且我的密钥已经添加到代理中。

【问题讨论】:

  • 代理添加了ssh密钥吗?使用ssh-add -l 列出代理知道的所有密钥。
  • 是的,我确实将它们添加到代理中,我编辑了问题以便更清楚。
  • 你解决过这个问题吗?

标签: git ssh ssh-keys


【解决方案1】:

我遇到了同样的/类似的问题并像这样解决了它......

以前,问题是这样的:

在我自己的电脑上,ssh-add -l 给了:

2048 <fingerprint> (RSA)

然后,如果我执行ssh -A my-server 并运行ssh-add -l,我得到:

2048 <fingerprint> (RSA)

正如预期的那样。

但是,当我执行ssh -A some-supercomputer(不是我的)并运行ssh-add -l 时,我得到了:

The agent has no identities.

原来问题是我的~/.bashrc 中有以下行:

eval `ssh-agent -s`

我把它放在那里是为了启动一个代理,因为那台机器默认没有启动一个。从我的~/.bashrc 中删除该行允许该机器上的ssh-add -l 按预期提供2048 &lt;fingerprint&gt; (RSA)

现在,我怀疑你的~/.bashrc 中有那行,但关键是:那行正在启动一个新代理,它会覆盖转发的代理。因此,如果您正在查看来自 ssh-add -l 的相同输出,则可能是远程系统以某种方式启动了一个新代理,该代理覆盖了您的转发代理。如果您不是系统管理员,我不确定如何明确检查,也不确定如何修复它。

另外,我发现this answer 指出需要在远程计算机的sshd_config 上启用AllowAgentForwarding 选项 - 同样,如果您没有管理员权限,则很难解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多