我有一个私有的github repo,我想在EC2实例中克隆。从我的本地计算机,我通过私钥访问它(所以我可以克隆,拉,只使用我的密钥,而不是密码)。 我不想将我的密钥存储在EC2实例上,因为我不会是唯一访问它的人。 我试图使用ssg-agent转发来做到这一点。 我已将我的密钥添加到本地计算机中的代理,然后使用以下命令登录到EC2实例:
ssh -A ec2-user@instanceip
但是当我尝试做一个git clone时,它仍会提示我输入用户名和密码。 我已经更改了ec2实例中的ssh配置以允许代理转发,并且我的密钥已经添加到代理中。
答案 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
选项-再次,如果您没有管理员权限,则很难解决。