Git 著名的“ ERROR: Permission to. Git 拒绝用户”

我曾经尝试谷歌和通过 https://help.github.com/en/articles/connecting-to-github-with-ssh和各种各样的指南阅读。我无法 git push -u origin mastergit push origin master(相同的命令)。

我的 Git 账户至少有两年了。我已经成功地能够创建回购和 push -u origin master罚款在我的笔记本电脑,但在这个桌面我有问题。

我试过这么做:

我已经设置了我的 git 用户名

2. 我已经设置了我的 git 用户电子邮件

3.我已经上传了我的/home/meder/的内容。Ssh/id _ rsa.从酒吧到 Github 的账户页面。我已经确认我没有粘贴任何空格

4. 我创建了一个 ~/. ssh/config,其中包含以下内容:

  Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

我已经将.ssh 修改为700,id _ rsa 600

5. 我添加了 适当的远程起源 不会打错字: git remote add origin git@github.com:medero/cho.git

6. 要确认 # 5,这里是我的. git/config 目录,它是 正确而不是另一个目录:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:medero/cho.git

ssh git@github.com -v给了我一个成功的身份验证

8.有一件事很奇怪,它向我打招呼的用户名后面加了 t。我的 github 用户名是 medero,不是 medert

嗨,梅德罗! 你成功了 但 GitHub 没有 提供 shell 访问。

9. 我是代理服务器或防火墙后面的 没有

10. 提供了键,以下是 -v的输出:

debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/meder/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/meder/.ssh/id_rsa
debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: { some stuff, dont know if i should share it


debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).

以下是我使用的命令

mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add origin git@github.com:medero/cho.git
git push -u origin master

我不想创建一个新的 SSH 密钥。

13.如果我使用 ssh 克隆 git,然后编辑、提交和 git push,得到的结果是一样的。

下面是实际的错误:

$ git push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly

15. 我已经设置了我的 github 用户名和 github 令牌:

$git config —— global github.user medero $git config —— global GitHub.token 0123456789yourf0123456789token 设置系统上所有 git 实例的 GitHub 令牌

16.我已经确认我的 github 用户名不是 mederot,我的 github 令牌在我的帐户页面上是正确的(验证了前2个字符和后2个字符)。

要确认 # 16,~/. gitconfig 包含

[github]
token = mytoken...
user = medero

如果有必要的话,我做了 ssh-key add ~/.ssh/id_rsa..。



理论:

我怀疑有什么不对劲的地方,因为当我对 ssh 进行身份验证时,用户问候语是 mederot而不是 medero,后者是我的帐户。我的 github 帐户中的某些内容可能被错误地缓存了吗?

我还怀疑一些本地 ssh 缓存的怪异之处,因为如果 i mv ~/.ssh/id_rsa KAKAmv ~/.ssh/id_rsa.pub POOPOO,并执行 ssh git@github.com -v,它仍然认证我,并说它服务于我的/home/meder/。当我重命名它的时候,ssh/id _ rsa? !必须缓存吗!

199659 次浏览

在步骤18中,我假设你指的是 ssh-add ~/.ssh/id_rsa? 如果是这样,那么解释如下:

我还怀疑一些本地 ssh 缓存的怪异之处,因为如果我 mv ~/。Ssh/id _ rsa KAKA 和 mv ~/。Ssh/id _ rsa.还有 ssh git@github.com-v,它仍然认证我,并说它服务于我的/home/meder/。当我重命名它的时候,ssh/id _ rsa? !必须缓存吗!

因为 ssh-agent正在缓存你的钥匙。

如果您查看 GitHub,就会发现有一个 梅德罗帐户。你确定这跟你没关系吗?GitHub 不应该允许将同一个 SSH 公钥添加到两个帐户,因为当您使用 git@github.com:... URL 时,它是基于 SSH 密钥来识别用户的。(这不应该被允许是确认 给你。)

因此,我怀疑(按照可能性的递减顺序)下列情况之一是正确的:

  1. 您以前创建了 mederot 帐户,并向其添加了 SSH 密钥。
  2. 有人获得了您的公钥副本,并将其添加到了 Mederot GitHub 帐户。
  3. GitHub 上有个可怕的漏洞。

如果1不是这种情况,那么我会向 GitHub 报告,这样他们就可以检查大约2或3。

更多:

Ssh-add-l 检查是否存在多个标识 如果是,通过 ssh-add-d“ that key file”删除它

这是由于一个冲突。

从 ssh-agent 中清除所有键

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github

添加 github ssh 键

ssh-add   ~/.ssh/github

现在应该可以了。

我和你有同样的问题。在谷歌了很长时间之后,我发现我的错误是由多个用户在他们的账户中添加了相同的密钥造成的。

因此,我的解决方案是: 删除错误用户的 ssh-key (我可以这样做,因为错误用户也是我的帐户)。如果错误的用户不是您的帐户,您可能需要更改您的 ssh-key,但我认为这不会发生。

我认为您的问题可能是由于您的帐户名称输入错误造成的。

在谷歌了几天之后,我发现这是唯一一个和我情况相似的问题。

但是,我刚刚解决了这个问题!因此,我把我的答案放在这里,以帮助任何其他人寻找这个问题。

我是这么做的:

  1. 打开 “ Keychain Access.app”(您可以在 Spotlight 或 LaunchPad 中找到它)

  2. 在类别中选择 “所有物品”

  3. 搜索 “饭桶”

  4. 删除所有旧的和奇怪的项目

  5. 再试一次,就成功了

造成这一问题的原因还有:

如果您使用的是 mac/linux,并且在 ~/中使用“ ControlMaster”。Ssh/config,可能有一些 ssh 控制主进程正在运行。

要找到他们,就跑:

ps aux | grep '\[mux\]'

然后杀掉相关的人。

如果问题出现在 Windows 上,那么从 Windows 历史记录中删除凭据。

  • 去找凭证经理
  • 转到 Windows 凭证
  • 删除通用凭据下的条目
  • 再次尝试连接。这一次,它会提示您输入正确的用户名和密码。

enter image description here enter image description here

从 Git 中删除凭证

我正在使用 Mac,这个问题通过从钥匙链访问应用程序中删除 github 记录得到了解决: 我是这么做的:

  1. 打开“ Keychain Access.app”(你可以在 Spotlight 或 LaunchPad 中找到它)
  2. 在类别中选择“所有项目”
  3. 搜索“ Git”
  4. 删除所有旧的和奇怪的项目尝试再次推,它只是工作

以上步骤是从@spyar 复制的,以方便使用。

我发现这个解决方案与@spyar 提供的解决方案相同,后者是存储旧用户名的 钥匙链访问应用程序。

这种情况有两种解决方案:

  1. 删除 钥匙链访问中的信息
    • 打开 钥匙链访问应用程序
    • 搜索 GitHub
    • 删除相应的凭证

或者

  1. 如果您想使用 Ssh 键。您只需将您的回购网址从 https

    Https://github.com/username/repo.git

    进入

    Git@github.com: 用户名/repo.git

在 Mac 上,如果您有多个 GitHub 登录名,并且使用 SSH 进行 没有登录,那么使用以下命令强制进行正确的登录:

git remote set-url origin https://username@github.com/username/repo-name.git

如果在推送到私有存储库时遇到问题,也可以使用这种方法。

我也遇到了这种情况,造成这种情况的原因是,当我克隆回购我推动我的变化,我拿起克隆网址从一个匿名标签没有登录。(我仍然不知道它是如何产生影响的)。由于某种原因,导致 Git 选择了另一个用户帐户。 当我再次尝试从一个适当的签署页面,它像往常一样为我工作。

我在使用 Travis CI 到 部署内容时遇到了这个错误,这涉及到将编辑推到存储库。

我最终通过使用 public_repo范围访问权限更新与 Travis 帐户关联的 GitHub 个人通行证个人通行证来解决这个问题:

Select <code>public_repo</code>

我最近遇到了这个问题,因为在我的机器上使用 https 推出了旧的回购。步骤5和步骤6解决了这个问题,它们将我的 repo 的远程 URL 从 https url 重新设置为 ssh url

检查远程是否使用 https URL

> git remote -v
origin  https://github.com/ExampleUser/ExampleRepo.git (fetch)
origin  https://github.com/ExampleUser/ExampleRepo.git (push)

然后重新设置原点以使用 ssh url

> git remote set-url origin git@github.com:ExampleUser/ExampleRepo.git

正在验证新的遥控器

> git remote -v
origin  git@github.com:ExampleUser/ExampleRepo.git (fetch)
origin  git@github.com:ExampleUser/ExampleRepo.git (push)

现在可以成功地 git push -u origin

我仍然不确定当远程设置为 https 时,哪个设置会导致推送失败,但这是我问题的解决方案

我在处理 MAC 时也碰巧遇到了这个问题 问题是。我曾经用我以前的 GitHub 账号登录过。现在,我正在使用一个不同的 GitHub 帐户。 我用下面的步骤解决了-

  1. 打开“ Keychain Access.app”
  2. 在类别中选择“所有项目”
  3. 搜索“ Github”
  4. 打开那个入口,
  5. 并将 Account 更改为新的 github 用户名。

再用力一次就行了

在向储存库推送时也观察到了同样的问题:

$ git push --set-upstream origin new-operator-test
ERROR: Permission to redhat-openshift-ecosystem/redhat-marketplace-operators.git denied to cniackz.
fatal: Could not read from remote repository.


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

我们所做的就是确保您克隆了自己的分支存储库:

git clone git@github.com:cniackz/redhat-marketplace-operators.git
git checkout -b new-branch
<performed the changes>
git add <files>
git commit -m <files>

它奏效了:

$ git push --set-upstream origin new-branch
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 10 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (7/7), 643 bytes | 643.00 KiB/s, done.
Total 7 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote:
remote: Create a pull request for 'new-branch' on GitHub by visiting:
remote:      https://github.com/cniackz/redhat-marketplace-operators/pull/new/new-branch
remote:
To github.com:cniackz/redhat-marketplace-operators.git
* [new branch]      new-branch -> new-branch
Branch 'new-branch' set up to track remote branch 'new-branch' from 'origin'.

有人怀疑,首先,它没有使用分叉存储库,而是使用了 redhat 中的存储库,这就解释了这个问题,因为 cniackz用户不能访问该存储库,而只能使用分叉存储库。

我在 Mac OS 上遇到过类似的问题。

摘要

  1. 确保使用正确的/预期的用户名克隆回购
  2. 如果您试图在不指定 GitHub 用户名的情况下克隆一个回购,它会获取已经缓存在 OSX 的 Keychain Access 实用程序中的 GitHub 用户名
  3. 因此,我必须在克隆 repo-git clone https://username@github.com/username/repository.git时指定用户名
  4. 当它提示输入密码时,您可能必须使用 use a personal access token (PAT) ,因为 GitHub 在2021年8月13日取消了对密码身份验证的支持。下面是一些关于 个人访问令牌个人访问令牌(PAT)以及如何设置和使用的文档
  5. 初始推送还可能需要指定用户名 git push https://username@github.com/username/repository.git并提供 PAT 作为密码
  6. 在随后的推送中,当它们被缓存到 OSX Keychain Access util 时,不会提示任何密码。另外,我不必使用完整的 URL 来推送。只有 git push <origin/remote/upstream> <branch>运行正常

关于我的设置/情况/问题的更多细节

实际上,我是在尝试使用两个不同的 GitHub (GitHub.com)账户(1. 工作账户/电子邮件; 2. 个人账户/电子邮件)

我的情况有点特殊,因为我有一个现有的 SSH 密钥与我的个人电子邮件生成时,我们的组织是在前提下将我们的回购转移到公共 github.com,并且该密钥也配置为 Bastion AWS (亚马逊网络服务)。我不能用相同的电子邮件重新生成一个新的密钥,而且我也没有用工作电子邮件生成一个新的密钥,这将需要更新为 Bastion AWS 配置的密钥

注意 : 我的初始设置本身并不正确,因为当时我并不太了解如何使用 SSH 密钥,所以我意识到我设置错了

下面的方法对我很有用(注意,这是一个解决方案)。我转而使用 GitHub 个人访问令牌(PAT)。

git clone https://username@github.com/username/repository.git

提示密码,我在这里输入我的 PAT (然后缓存到 OSX 钥匙链访问)

然后

git push https://username@github.com/username/repository.git

在我的后续推送中,没有密码提示,我也不必使用完整的 URL 来推送。只有 git push <origin/remote/upstream> <branch>运行正常

帮助我的步骤:

  1. 删除了 github 上所有现有的 PATs,并创建了一个新的 PATs
  2. 在创建新的 PAT 时,请确保检查 回购部分。以下是来自 github 的图片作为例子: step 8 of the above link
    对我来说,这一步是错误的源头,因为我正确地遵循了上面的 步骤1
  3. 在本地机器 窗户Mac中更新 github 密码

我就是这么想的。

我在试图从一个组织克隆一个私有存储库时遇到了这个问题。在我的例子中,解决方案是从 GitHub 中删除 SSH 密钥并添加一个新密钥。