无法推送到git存储库 - 权限被拒绝

时间:2012-12-02 22:31:12

标签: git github ssh ssh-keys ssh-agent

我遇到以下问题:

$ git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我已经检查了这样做的连接:

$ ssh -vT git@github.com

并且输出看起来不错,我的身份验证正确。

在进一步检查时,我注意到:

$ ssh-add -l
The agent has no identities.

我试过运行ssh-agent,但没有改变:

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-A1mhFqvqncuO/agent.766; export SSH_AUTH_SOCK;
SSH_AGENT_PID=767; export SSH_AGENT_PID;
echo Agent pid 767;
$ ssh-add -l
Could not open a connection to your authentication agent.

我正在使用Arch Linux。任何帮助将非常感谢!提前谢谢!

Github diagnostic help here.

9 个答案:

答案 0 :(得分:117)

我遇到了类似的问题,通过运行以下命令将我的密钥添加到已知密钥列表中解决了我的问题:

ssh-add ~/.ssh/id_rsa

希望它也能解决你的问题。 ;)

答案 1 :(得分:6)

如果您尚未阅读,请查看GitHub帮助页面以了解此错误:

Error: Permission denied (publickey)

每次我遇到此问题时,都是由于该页面上列出的最后一个问题:我没有连接到我的GitHub帐户的当前工作站的公钥。当然,GitHub还提供how to attach your public key to your account的说明。


<强> TL;博士

确保您当前的公钥已附加到您的GitHub帐户。

答案 2 :(得分:6)

您需要在控制台中执行(如果您使用putty ssh客户端):

  1. 如果密钥不存在,则生成密钥:

    cd ~/.ssh && ssh-keygen -lf ~/.ssh/id_rsa.pub
    
  2. 不要忘记在此步骤输入的密码!

    1. 将您的公钥输出到屏幕:

      cd ~/.ssh && cat id_rsa.pub
      
    2. 通过单击复制此字符串,并将鼠标指针从开始输出移动到结束。无需按 Ctrl + V 或更多按键。

    3. 在GitHub上登录您的帐户并将此公钥添加到https://github.com/settings/ssh

    4. 现在你可以在本地使用你的git。

答案 3 :(得分:4)

我认为这不会解决您的问题,因为您直接测试ssh -vT git@github.com并且它有效,但您使用ssh-agent不正确。你需要运行

$ eval `ssh-agent -s`
Agent pid 767
$ ssh-add -l
The agent has no identities.

这将评估环境导出命令,并允许您的ssh-addssh命令与代理进行通信。或者,您可以要求代理启动shell,终端等,它将设置适当的环境:

$ ssh-agent bash
$ ssh-add -l
The agent has no identities.

在这种情况下,shell作为ssh-agent的子代运行,代理将在shell退出时关闭。

答案 4 :(得分:3)

我在我的Ubuntu上遇到了同样的问题然后我意识到我处于sudo模式,一旦我访问remote而没有sudo它就进展顺利。

这就是我如何摆脱这个问题,希望它可能有所帮助。

答案 5 :(得分:2)

权限被拒绝(公钥)。我今天遇到了这个问题,但我终于找到了解决方案,并成功解决了我的问题。

也许您应该验证以下问题:

  1. 你有一个github帐户
  2. git配置您的用户名和-mail
  3. 生成一个ssh-key pri / pub对并将公钥添加到您的git帐户,请检查这可能会为您提供帮助:generating new ssh keycannot push git repository 'permission denied'
  4. 检查是否已成功添加ssh-key:ssh -V username@github.com
  5. 祝你好运!

答案 6 :(得分:2)

在我的情况下,我遇到了GitLab的这个问题,因为我使用的是非默认的SSH密钥对路径。 @NEO的答案非常有效:

ssh-add ~/.ssh/other_id_rsa

但是,每次打开新终端时我都必须这样做。

要使此更改成为永久更改,您必须编辑~/.ssh/config并添加以下内容:

Host gitlab.company.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename

有关详细信息,请查看gitlab's documentation

答案 7 :(得分:0)

我会尝试从(Pushing to Git returning Error Code 403 fatal: HTTP request failed)进行尝试:

为确保绝对能够使用https协议登录,您应该首先将身份验证凭据设置为git Remote URI:

git remote set-url origin https://yourusername@github.com/user/repo.git

然后在尝试git push时会要求您输入密码。

答案 8 :(得分:-1)

致命:无法访问 'https:// ......':请求的 网址返回错误:403 如果您在推送代码时看到此错误 您在Windows中遵循此地址

⇒控制面板\用户帐户\凭据管理器 并删除GitHub中的过去帐户