Git着名的"错误:.git拒绝用户权限"

med*_*iev 108 git ssh github

我试过谷歌搜索并阅读http://help.github.com/troubleshooting-ssh/和各种各样的指南.我无法git push -u origin mastergit push origin master(同一命令).

我的git帐户至少有2年左右的时间.我已经成功地push -u origin master在我的笔记本电脑上创建了回购和罚款,但在这个桌面上我遇到了问题.

这是我试过的:

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
Run Code Online (Sandbox Code Playgroud)

我已经将.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
Run Code Online (Sandbox Code Playgroud)

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

8.一个奇怪的事情是,它给我打招呼的用户名已t附加到它上面.我的github用户名medero不是medert.

你好mederot!您已成功通过身份验证,但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).
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

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

16.我已经确认我的github用户名是NOT mederot而且我的github令牌是我的帐户页面的CORRECT(验证前2个字符和最后2个字符).

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

[github]
    token = mytoken...
    user = medero
Run Code Online (Sandbox Code Playgroud)

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



说法:

我怀疑有可疑之处,因为当我的ssh认证,用户问候mederot,不medero,这是我的ACCT.我的github帐户中的某些内容可能被错误地缓存了吗?

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

Ali*_*han 148

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

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

这是我做的:

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

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

  3. 搜索"git"

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

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

  • 竖起大拇指.你是英雄. (14认同)
  • 看起来很有帮助,但不清楚什么是“旧的和奇怪的”。我是不是要把一堆东西搞砸了..? (3认同)
  • @geotheory “旧的和奇怪的”东西意味着旧的日期项目和不正确的电子邮件或用户名。您可以按“修改日期”对表格进行排序。 (2认同)

FAH*_*HID 76

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

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

在此输入图像描述 在此输入图像描述

从git中删除凭据

  • 仅删除 github.com 凭据对我来说就足够了 (4认同)
  • 完善.我正在使用我不再使用的帐户访问403.现在解决了. (2认同)

Mar*_*air 33

在步骤18中,我认为你的意思是ssh-add ~/.ssh/id_rsa?如果是这样,那说明了这一点:

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

...因为它ssh-agent正在缓存你的密钥.

如果您查看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将其删除"该密钥文件"

  • `ssh-add -d` -> “无法打开与您的身份验证代理的连接。” (2认同)

Sar*_*esh 13

它是由于冲突.

清除ssh-agent中的所有密钥

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github
Run Code Online (Sandbox Code Playgroud)

添加github ssh密钥

ssh-add   ~/.ssh/github
Run Code Online (Sandbox Code Playgroud)

它现在应该工作.

  • `ssh-add -D`也会删除所有身份,如果代理进入无效状态,则会很有用. (3认同)

lea*_*nne 11

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

git remote set-url origin https://username@github.com/username/repo-name.git
Run Code Online (Sandbox Code Playgroud)

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


Dee*_*tta 6

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

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

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


thu*_*nle 6

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

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

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

要么

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

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

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

希望这可以帮助.