我有一个私有 github 存储库,我想将其克隆到 EC2 实例中。从我的本地计算机,我通过私钥访问它(这样我只能使用我的密钥而不是密码进行克隆、拉取、推送)。我不想将密钥存储在 EC2 实例上,因为我不是唯一访问它的人。我正在尝试使用 ssg-agent 转发来做到这一点。我已将密钥添加到本地计算机中的代理,然后使用以下命令登录 EC2 实例:
ssh -A ec2-user@instanceip
Run Code Online (Sandbox Code Playgroud)
但是当我尝试进行 git 克隆时,它仍然会提示我输入用户名和密码。我已经更改了 ec2 实例中的 ssh 配置以允许代理转发,并且我的密钥已添加到代理中。
我面临着同样/类似的问题并像这样解决了......
之前,问题是这样的:
在我自己的电脑上,ssh-add -l给出:
2048 <fingerprint> (RSA)
Run Code Online (Sandbox Code Playgroud)
然后,如果我ssh -A my-server跑了,ssh-add -l我会得到:
2048 <fingerprint> (RSA)
Run Code Online (Sandbox Code Playgroud)
正如预期的那样。
但是,当我这样做ssh -A some-supercomputer(不是我的)并运行时,ssh-add -l我得到:
The agent has no identities.
Run Code Online (Sandbox Code Playgroud)
事实证明,问题是我的以下行~/.bashrc:
eval `ssh-agent -s`
Run Code Online (Sandbox Code Playgroud)
我把它放在那里来启动代理,因为该机器默认情况下没有启动代理。~/.bashrc从我允许的那台机器上删除该行以按预期ssh-add -l提供2048 <fingerprint> (RSA)。
现在,我怀疑您的代码中是否有该行,~/.bashrc但要点是:该行正在启动一个新代理,该新代理会覆盖转发的代理。因此,如果您正在查看 的相同输出ssh-add -l,则远程系统可能正在以某种方式启动一个新代理,该新代理会覆盖您转发的代理。我不知道如何明确检查,也不知道如果您不是系统管理员如何修复它。
或者,我发现这个答案指出AllowAgentForwarding需要在远程计算机上启用该选项sshd_config- 再次,如果您没有管理员权限,则很难解决。