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


118

我尝试使用谷歌搜索,并通读https://help.github.com/en/articles/connecting-to-github-with-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

我已将.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

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

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 push,我将得到相同的结果。

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用户名不是,mederot并且我的github令牌在我的帐户页面上是正确的(已验证的前2个字符和后2个字符)。

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

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

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



理论:

我怀疑其中有些可疑,因为当我通过ssh身份验证时,用户问候语是 mederot不是medero,这是我。我的github帐户中的内容可能被错误地缓存了吗?

我还怀疑某些本地ssh缓存的怪异性,因为如果i mv ~/.ssh/id_rsa KAKAmv ~/.ssh/id_rsa.pub POOPOO,and do ssh git@github.com -v,它仍然可以对我进行身份验证,并说当我重命名它时,它可以为我的/home/meder/.ssh/id_rsa服务!它必须被缓存吗?


我正在使用“适用于Windows的Github”,并且在两个Github帐户之间切换时遇到了类似的问题。这里是我的解决方案: stackoverflow.com/questions/18565876/...
艾丽莎

Answers:


35

在步骤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“那个密钥文件”将其删除


马克大有帮助!这也为我解决了。
Leachy Peachy

就是这样 你救了我头疼。现在,我只需要记住ssh-add ...每次要切换github / ssh登录名时都要运行。
塞林2012年

由于某些原因ssh-add -d <keyfile>无法正常工作。(确实删除了tyhe文件。)您提到的缓存必须以某种方式手动重新加载。怎么样?
not2qubit

ssh-add -d->“无法打开与身份验证代理的连接。”
alex

ssh-add就是为我做的一点。谢谢!
rayryeng

158

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

但是,我只是解决了这个问题!因此,我将答案放在这里,以帮助其他人搜索此问题。

这是我所做的:

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

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

  3. 搜索“ git”

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

  5. 尝试再次推送,它就可以了


17
竖起大拇指的伙伴。你是英雄
班萨尔亲王2015年

1
是的,终于,在经历了无数的SSH密钥之后,这才是有效的答案!似乎Mac和https访问使用钥匙串。疯。
Patrick Chu

1
希望您能尝试解决
本周的不足

1
看起来很有帮助,但不清楚是什么old & strange。我要把一堆东西弄乱吗?
geotheory

1
@geotheory old & strange事物表示旧的日期项目以及不正确的电子邮件或用户名。您可以按排序表格Date Modified
爱丽丝·陈

91

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

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

在此处输入图片说明 在此处输入图片说明

从git删除凭证


2
完善。我正在使用不再使用的帐户进行403访问。现在解决了。
安东·埃皮欣

1
仅删除github.com凭据就足够了
Bart De Boeck

您可以在其中更改用户名和其他任何内容。就是这样。
WesternGun

22

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

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

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


1
谢谢,这对我有用。它提示我输入密码,提供密码后我便可以进行推送。非常感激!
像素

...但是这并不能解决我在Windows上的问题,仅在Mac上
像素

...但是@Fahid建议在上方清理Windows上的凭据有所帮助
像素

你是英雄。
Vaibhav

如果我们多个属于不同帐户的github项目,这是正确的答案
Gangadhar JANNU

14

其由于冲突。

从ssh-agent清除所有密钥

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

添加github ssh密钥

ssh-add   ~/.ssh/github

现在应该可以工作了。


3
也会ssh-add -D删除所有身份,如果代理进入无效状态,则很有用。
山姆

6

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

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

上面的步骤是从@spyar复制而来的。


6

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

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

  1. 删除信息钥匙串访问通过
    • 打开钥匙串访问应用
    • 搜索github
    • 删除相应的凭证

要么

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

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

进入

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

希望这可以帮助。


2

我最近在机器上使用https推送的旧仓库中遇到了这个问题。第5步和第6步通过将我的仓库的远程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网址

> 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时推送失败,但这是解决我的问题的方法


错误:对unrealcv / synthetic-computer-vision.git的权限被拒绝给monajalal。致命:无法从远程存储库读取。请确保您具有正确的访问权限,并且存储库存在。
莫娜·贾拉勒

1

我和你有同样的问题。经过长时间的Google搜索,我发现我的错误是由多个在其帐户中添加了相同密钥的用户引起的。

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

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


0

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

如果您使用的是Mac / Linux,并且在〜/ .ssh / config中使用“ ControlMaster”,则可能有某些ssh控件主进程正在运行。

要找到它们,请运行:

ps aux | grep '\[mux\]'

并杀死相关的。


0

我也遇到了这个问题,导致我的原因是,在克隆要推送更改的存储库时,我没有登录就从隐身选项卡中获取了克隆URL。(我仍然对它的效果一无所知)。由于某种原因导致git选择了另一个用户帐户。当我从正确的登录页面再次尝试时,它对我来说像往常一样工作。


0

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

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

选择<code> public_repo </ code>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.