【问题标题】:Cannot push to git repository - permission denied无法推送到 git 存储库 - 权限被拒绝
【发布时间】:2012-11-20 09:51:48
【问题描述】:

我有以下问题:

$ 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.

【问题讨论】:

  • 显示你的~/.ssh/config
  • 我的解决方案是重新生成我的公钥。似乎在 Ubuntu 下对我有用。

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


【解决方案1】:

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

ssh-add ~/.ssh/id_rsa

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

【讨论】:

  • 这帮助了我很多次。有没有办法永久添加这个,所以我不必总是经历这些动作。
【解决方案2】:

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

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

    cd ~/.ssh && ssh-keygen -lf ~/.ssh/id_rsa.pub
    

不要忘记密码,在这一步输入!

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

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

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

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

【讨论】:

    【解决方案3】:

    如果您还没有阅读它,您应该查看 GitHub 帮助页面以了解此错误:

    Error: Permission denied (publickey)

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


    tl;dr

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

    【讨论】:

    • 是的,我已阅读此内容,并且我的公钥已附加到我的 github 帐户中。
    • 当。如果您当前机器上当前用户的公钥与在 github 中注册的公钥匹配,那么我将无法提供任何帮助 - 每次我遇到此错误时,这都是我的问题。
    【解决方案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 退出时关闭。

    【讨论】:

      【解决方案5】:

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

      这就是我解决问题的方法,希望它可以帮助。

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

          【解决方案7】:

          在我的情况下,我在 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

          【讨论】:

            【解决方案8】:

            我会从 (Pushing to Git returning Error Code 403 fatal: HTTP request failed) 试试这个:

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

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

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

            【讨论】:

              【解决方案9】:

              致命:无法访问 'https://......':请求的 网址返回错误:403 如果您在推送代码时看到此错误 你在 windows 中关注这个地址

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

              【讨论】:

              • 发帖人已经说明他在 Arch Linux 下遇到了这个问题
              猜你喜欢
              • 2016-02-21
              • 2018-10-24
              • 2019-06-09
              • 2013-01-17
              • 2010-10-29
              • 2014-02-01
              • 2020-08-29
              • 2016-05-18
              相关资源
              最近更新 更多