ssh - Git着名的“错误:.git拒绝用户权限”

我试过谷歌搜索并阅读[http://help.github.com/troubleshooting-ssh/]和各种各样的指南。 我无法git push -u origin mastermv ~/.ssh/id_rsa KAKA(相同的命令)。

我已经拥有至少2年左右的git帐户了。 我已经成功地在我的笔记本电脑上创建了repos和mv ~/.ssh/id_rsa KAKA,但在这个桌面上我遇到了问题。

这是我试过的:

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

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

3.我已将/home/meder/.ssh/id_rsa.pub的内容上传到github的帐户页面。 我已经验证我没有粘贴任何空格

4.我用这些内容创建了一个〜/ .ssh / config:

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

我已经将.ssh修改为700,id_rsa 600

5.我添加了正确的远程原点而没有输入错别字:mv ~/.ssh/id_rsa KAKA

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

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

7. mv ~/.ssh/id_rsa KAKA为我提供了成功的身份验证

8.一个奇怪的事情是,它给我打招呼的用户名附有mv ~/.ssh/id_rsa KAKA。 我的github用户名是mv ~/.ssh/id_rsa.pub POOPOO,而不是ssh git@github.com -v

你好mederot! 你成功了   经过身份验证,但GitHub没有   提供shell访问。

9.我不在代理或防火墙之后

10.提供密钥,继承人mv ~/.ssh/id_rsa KAKA的输出:

mv ~/.ssh/id_rsa KAKA

11.这是我使用的命令

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

12.我不想创建新的SSH密钥。

13.如果我使用ssh git clone并进行编辑,提交和git推送,我会得到同样的东西。

14.这是实际的错误:

$ 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用户名不是mv ~/.ssh/id_rsa KAKA,我的github令牌是我的帐户页面的CORRECT(验证前2个字符和最后2个字符)。

17.确认#16,〜/ .gitconfig包含

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

18.如果有必要,我做了mv ~/.ssh/id_rsa KAKA ......



说法:

我怀疑有些东西可疑,因为当我通过ssh认证时,用户问候语是mv ~/.ssh/id_rsa KAKA而不是mv ~/.ssh/id_rsa.pub POOPOO,这是我的帐号。 我的github帐户中的某些内容可能被错误地缓存了吗?

我还怀疑一些本地的ssh缓存怪异,因为如果我mv ~/.ssh/id_rsa KAKAmv ~/.ssh/id_rsa.pub POOPOO,并且做ssh git@github.com -v,它仍然验证我并说当我重命名它时它服务于我的/home/meder/.ssh/id_rsa?! 它必须缓存?!

meder omuraliev asked 2019-08-11T19:40:47Z
12个解决方案
140 votes

谷歌搜索了几天后,我发现这是与我的情况类似的唯一问题。

但是,我刚解决了这个问题! 所以我在这里给出答案,以帮助其他人搜索这个问题。

这是我做的:

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

  2. 选择"所有项目" 在类别中

  3. 搜索" git"

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

  5. 尝试再次推动它只是工作

Alice Chan answered 2019-08-11T19:43:18Z
67 votes

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

  • 去Credential Manager
  • 转到Windows凭据
  • 删除Generic Credentials下的条目
  • 再次尝试连接。这次,它应该提示您输入正确的用户名和密码。

enter image description here enter image description here

从git中删除凭据

FAHID answered 2019-08-11T19:44:07Z
33 votes

在步骤18中,我假设您的意思是git@github.com:...? 如果是这样,那说明了这一点:

我还怀疑一些本地ssh缓存怪异,因为如果我mv~ / .ssh / id_rsa KAKA和mv~ / .ssh / id_rsa.pub POOPOO,并且执行ssh git@github.com -v,它仍然验证我并说它服务 我的/home/meder/.ssh/id_rsa我改名了吗?! 它必须缓存?!

...因为git@github.com:...正在缓存你的密钥。

如果您查看GitHub,则会有一个mederot帐户。 你确定这与你无关吗? 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&#34删除它;该密钥文件"

Mark Longair answered 2019-08-11T19:42:09Z
12 votes

它是由于冲突。

清除ssh-agent中的所有密钥

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

添加github ssh密钥

ssh-add   ~/.ssh/github

它现在应该工作。

Sarvesh answered 2019-08-11T19:44:47Z
6 votes

我正在使用Mac,通过从钥匙串访问应用程序中删除github记录来解决问题:这是我做的:

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

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

Deepak Bhatta answered 2019-08-11T19:45:47Z
6 votes

我发现解决方案与@spyar提供的相同,即存储旧用户名的Keychain Access应用程序。

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

  1. 删除Keychain Access by中的信息
    • 打开Keychain Access应用程序
    • 搜索github
    • 删除相应的凭据

要么

  1. 如果你使用想要使用ssh密钥。 您只需从https更改您的回购网址

[https://github.com/username/repo.git]

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

希望这可以帮助。

thuanle answered 2019-08-11T19:47:12Z
6 votes

在Mac上,如果您有多个GitHub登录但未使用SSH,请使用以下命令强制正确登录:

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

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

leanne answered 2019-08-11T19:47:44Z
1 votes

我遇到了和你一样的问题。 经过漫长的谷歌搜索,我发现我的错误是由多个用户在他们的帐户中添加了相同的密钥引起的。

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

我认为您的问题可能是由您的帐户名称中的错误输入错误引起的。

Perth Charles answered 2019-08-11T19:48:24Z
1 votes

我最近遇到了这个问题,因为在我的机器上使用https推送了旧的仓库。 步骤5和6通过重新设置我的repo的远程URL从使用https url到ssh url解决了我的问题

检查遥控器正在使用https网址

> 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时,我可能会更改哪个设置可能导致推送失败,但这是我的问题的解决方案

PhilVarg answered 2019-08-11T19:49:24Z
0 votes

此问题也是由以下原因引起的:

如果您使用的是mac / linux,并且正在使用' ControlMaster' 在你的〜/ .ssh / config中,可能会有一些ssh控制主进程在运行。

要找到它们,请运行:

ps aux | grep '\[mux\]'

并杀死相关的。

Bash answered 2019-08-11T19:50:11Z
0 votes

我也遇到了这个问题,这对我来说是因为在克隆回购邮件时我正在推动我的更改,我从一个隐身标签中选择了克隆网址而没有登录。(我仍然对它如何影响一无所知)。 由于某种原因导致git选择另一个用户帐户。当我从正确的登录页面再次尝试时,它对我来说就像往常一样。

Blue answered 2019-08-11T19:50:37Z
0 votes

使用Travis CI部署内容时遇到此错误,其中包括将编辑推送到存储库。

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

Select <code>public_repo</code>

ms609 answered 2019-08-11T19:51:10Z
translate from https://stackoverflow.com:/questions/5335197/gits-famous-error-permission-to-git-denied-to-user