【问题标题】:Github remote permission deniedGithub 远程权限被拒绝
【发布时间】:2018-05-08 00:26:32
【问题描述】:

我正在尝试将我的 repo 上传到 github 并完成所有步骤:

git push -u origin master

此时它给了我以下错误:

远程:samrao2/manager-4.git 的权限拒绝 samrao1。

致命:无法访问“https://github.com/samrao2/manager-4.git/”: 请求的 URL 返回错误:403

我认为问题在于我在“samrao1”之前登录了另一个 Git 帐户,现在我正在尝试推送到“samrao2”。

谁能帮我把它重置到我可以成功推送到“samrao2”的位置。我假设我第一次尝试输入密码时会提示我输入密码。

【问题讨论】:

标签: git github


【解决方案1】:

无法访问 https 意味着:这与 SSH 无关(虽然可能切换到 SSH,但不能解释原始问题)

这与凭据缓存有关,这意味着 Git 将在您尝试时默认提供旧帐户的凭据(GitHub 帐户和 密码 PAT Personal Access Token)推送到新帐户。


提醒,大多数 Git 存储库托管服务使用 token 作为密码,而不是您的实际用户帐户密码。
例如,GitHub no longer accept password since Aug. 2021


查看您是否有一个 credential helper,它会缓存您的(旧帐户)凭据(用户名/密码),用于对您进行身份验证。

git config credential.helper 

在 Mac 上,作为Arpit Jcommented,只需转到/打开您的钥匙串访问权限->搜索 github.com 相关文件->并在那里编辑凭据。

见“Updating credentials from the OSX Keychain

在 Windows(2021 年,可能是 Linux 甚至 Mac)上,这将是 Windows Credential Managers GCMC: Git Credential Manager
打开 Windows Credential Store,查看第一个用户是否在那里注册:删除该条目,您将能够与第二个用户进行身份验证。

(这里是 BitBucket 的一个例子)


在命令行中(参见git credential),对于管理器核心凭证助手:

  • 获取旧密码或令牌:

    printf "protocol=https\nhost=github.com\nusername=<me>" | \
      git credential-manager-core get
    
    # output:
    protocol=https
    host=github.com
    username=<me>
    password=<old_password_or_token>
    
  • 删除旧密码:

    printf "protocol=https\nhost=github.com\nusername=<me>" | \
      git credential-manager-core erase
    

(将 &lt;me&gt; 替换为您的 GitHub 用户帐户名)

【讨论】:

  • 这行得通。谢谢。我进入 Mac 钥匙串并删除了一些与 Github 有关的记录。然后它提示我输入密码,效果很好!谢谢!!
  • 谢谢!!对于 MacOS 上的 ppl,只需转到/打开您的钥匙串访问权限-> 搜索 github.com 相关文件-> 并在那里编辑凭据。有时它会使用默认登录帐户并将其存储在那里。
  • @ArpitJ。谢谢你。我已将您的评论包含在答案中以提高知名度。
  • 谢谢。这几乎让我发疯。我必须记住它。
  • @JeffT。不客气。我已经编辑了答案以包含命令行选项。
【解决方案2】:

如果您使用的是 MacOS,则可以

  1. 去钥匙串访问,
  2. 搜索“GitHub”,
  3. 然后当弹出结果“github.com”时,将帐户或密码更改为您的新帐户,然后保存。

那么你就准备好了!

【讨论】:

    【解决方案3】:

    我不确定问题是什么,但由于您提到不知道“安装正确的密钥”是什么意思,我假设您尚未设置您的计算机以通过 SSH 对您的 Github 存储库进行身份验证.

    本指南应该向您展示如何做到这一点:Adding a new SSH key to your Github account

    另外,我建议使用“git://github.com/samrao2/manager-4.git/”作为您的远程 URL,而不是“https://github.com/samrao2/manager-4.git/”。后者要求您每次都输入密码,而前者将通过 SSH 进行身份验证,这远没有那么烦人。您可以通过键入以下内容将存储库中的远程 URL 更改为使用 git 协议而不是 https:

    git remote set-url origin git://github.com/samrao2/manager-4.git
    

    在您的项目目录中。

    【讨论】:

    • 您甚至可以将 GitHub 添加到您的 SSH 配置中!
    • 我试过了还是不行
    【解决方案4】:
    1. 多个用户生成自己的 ssh 密钥,Generating a new SSH key and adding it to the ssh-agent

    2. Adding a new SSH key to your GitHub account

    3. Alice 存储库,git bash

      • git config user.name "Alice"
      • git config user.email "alice@email.com"
      • eval $(ssh-agent -s),
      • ssh-add ~/.ssh/alice.private
      • ssh -T git@github.com,测试您的 SSH 连接
      • Git 其他操作
    4. Bob 存储库,git bash

      • git config user.name "Bob"
      • git config user.email "bob@email.com"
      • eval $(ssh-agent -s),
      • ssh-add ~/.ssh/bob.private
      • ssh -T git@github.com,测试您的 SSH 连接
      • Git 其他操作

    【讨论】:

      【解决方案5】:

      此处的 403 (error) 表示凭据错误或您无权推送。

      解决方案

      对于 Windows

      单击窗口按钮 > 凭据管理器 > Windows 凭据 > 通用凭据

      接下来,删除或编辑 Github 密钥。

      对于 Mac ?

      1-在 Finder 中,搜索 Keychain Access 应用程序。

      2在 Keychain Access 中,搜索 github.com。

      3-找到github.com的“互联网密码”入口。

      4-相应地编辑或删除条目。

      【讨论】:

        【解决方案6】:

        我有一个类似的问题,你需要验证的两件事是什么:

        1. 上面已经充分讨论过的钥匙链问题;
        2. Git 最近停止使用密码,您需要生成个人访问令牌。注意这很重要,我在创建令牌时遇到问题的根源,请确保在开发人员选项下授予 Github 上令牌的权限。

        【讨论】:

        【解决方案7】:

        问题是您尝试使用旧 github 帐户的 ssh 密钥推送到新 github 帐户,因此请使用此链接 https://help.github.com/en/github/authenticating-to-github/error-permission-to-userrepo-denied-to-userother-repo 为新 github 帐户生成新的 SSH 密钥,然后将其添加到您的 github 帐户。在此尝试推送之后,它可以工作

        【讨论】:

          【解决方案8】:

          我在 Github 有一个个人帐户和一个企业帐户。我同时向两个帐户提交和推送更改。

          我所做的是 1) 在不同的会议上运行个人和商业项目; 2) 使用 SSH 链接为一个帐户设置 URL,并为另一个帐户保留 URL 正常 (HTTPS)。

          【讨论】:

            【解决方案9】:

            您可以通过从您之前连接的特定存储库撤消第二个帐户“samrao1”的访问权限来解决此问题。

            【讨论】:

              【解决方案10】:

              只需转到控制面板\用户帐户\凭据管理器\编辑通用凭据

              并更新您的 git 凭据

              【讨论】:

                【解决方案11】:

                如果您仍然遇到相同的问题,请卸载 git 并重新安装。这对我有用。谢谢

                【讨论】:

                • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                【解决方案12】:

                检查您的个人访问令牌。编辑令牌中的范围。我检查了令牌中的所有访问选项。这样做,错误没有出现。 https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

                【讨论】:

                  【解决方案13】:

                  我遇到了同样的问题,然后从 Windows 凭据管理器中删除了 git 凭据

                  【讨论】:

                    【解决方案14】:

                    只有在你之前在你的机器上使用过 git cli 的情况下

                    然后只需按开始按钮打开系统上的凭据管理器,然后键入“凭据管理器”并切换到“Windows 凭据”选项卡。

                    删除与https://github.com关联的现有已保存帐户,如下所示:

                    现在再次尝试推送代码,这次会弹出验证提示,验证你的 github 帐户,恭喜你,你的代码托管在所需存储库的给定分支上。

                    【讨论】:

                      【解决方案15】:

                      从项目目录中删除 .git 文件夹,然后再次从头开始推送它们对我有用。

                      【讨论】:

                        猜你喜欢
                        • 2013-12-09
                        • 2012-01-18
                        • 2012-04-25
                        • 2020-01-08
                        • 2011-12-24
                        • 2022-01-10
                        • 2016-02-12
                        • 2011-10-17
                        相关资源
                        最近更新 更多