使用ssh代理转发来克隆git repo

时间:2018-04-04 18:14:42

标签: git ssh ssh-keys

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

ssh -A ec2-user@instanceip

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

1 个答案:

答案 0 :(得分:0)

我面临着相同/相似的问题,并以此解决了这个问题...

之前,问题是这样的:

在我自己的计算机上,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 <fingerprint> (RSA)

现在,我怀疑您在~/.bashrc中是否包含该行,但重点是:该行正在启动一个新的代理,该代理将覆盖转发的代理。因此,如果您正在查看ssh-add -l的相同输出,则可能是远程系统以某种方式启动了一个新代理,该新代理将覆盖您转发的代理。我不确定如何明确检查该问题,如果您不是系统管理员,也不确定如何解决该问题。

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