我尝试使用Google搜索并阅读http://help.github.com/troubleshooting-ssh/以及各种各样的指南。我无法git push -u origin master
或git 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
。
你好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).
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用户名不是mederot
,而且我的github令牌是我的帐户页面正确的(经过验证的前2个字符和最后2个字符)。
17。要确认#16,〜/ .gitconfig包含
[github]
token = mytoken...
user = medero
18。我做了ssh-key add ~/.ssh/id_rsa
,如果有必要的话......
的学说:
我怀疑有些东西可疑,因为当我通过ssh身份验证时,用户问候语是mederot
而不是medero
,这是我的帐号。我的github帐户中的某些内容可能被错误地缓存了吗?
我还怀疑一些本地ssh缓存怪异,因为如果我mv ~/.ssh/id_rsa KAKA
和mv ~/.ssh/id_rsa.pub POOPOO
,并且ssh git@github.com -v
,它仍然验证我并说它服务于我的/home/meder/.ssh / id_rsa当我重命名它?!它必须被缓存?!
答案 0 :(得分:140)
谷歌搜索了几天之后,我发现这是唯一与我的情况类似的问题。
然而,我刚刚解决了这个问题!所以我在这里提出我的答案,以帮助其他人搜索这个问题。
打开" Keychain Access.app" (您可以在Spotlight或LaunchPad中找到它)
在类别
搜索" git"
删除所有旧版本奇怪的项目
尝试再次按下它只是工作
答案 1 :(得分:71)
如果Windows上出现问题,请从Windows历史记录中删除凭据。
答案 2 :(得分: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密钥识别用户。 (这不应该被允许确认here。)
所以,我怀疑(按可能性递减顺序)下列情况之一就是这样:
如果不是1,那么我会向GitHub报告,所以他们可以检查2或3。
更多:
ssh-add -l检查是否存在多个标识 如果是,请通过ssh-add -d删除它“该密钥文件”
答案 3 :(得分:12)
由于冲突。
清除ssh-agent
中的所有密钥ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github
添加github ssh密钥
ssh-add ~/.ssh/github
现在应该可以了。
答案 4 :(得分:6)
我正在使用Mac,通过从钥匙串访问应用程序中删除github记录来解决问题: 这是我做的:
以上步骤是从@spyar复制的,以方便使用。
答案 5 :(得分:6)
我发现解决方案与@spyar提供的相同,即存储旧用户名的 Keychain Access 应用。
这种情况有两种解决方案:
或
进入
git@github.com:用户名/ repo.git
希望这有帮助。
答案 6 :(得分:6)
在Mac上,如果您有多个GitHub登录并使用SSH 不,请使用以下命令强行登录:
git remote set-url origin https://username@github.com/username/repo-name.git
如果您在推送到私人存储库时遇到问题,这也有效。
答案 7 :(得分:1)
我和你有同样的问题。经过漫长的谷歌搜索,我发现我的错误是由多个用户在他们的帐户中添加了相同的密钥引起的。
所以,这是我的解决方案:删除错误用户的ssh-key(我可以这样做,因为错误的用户也是我的帐户)。如果错误的用户不是您的帐户,您可能需要更改您的ssh密钥,但我认为这不会发生。
我认为您的问题可能是由于帐户名称中的错误输入错误造成的。
答案 8 :(得分:1)
我最近在机器上使用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时可能导致推送失败,但这是我的问题的解决方法
答案 9 :(得分:0)
此问题也是由以下原因引起的:
如果您使用的是mac / linux,并且在〜/ .ssh / config中使用“ControlMaster”,则可能会运行一些ssh控制主进程。
要找到它们,请运行:
ps aux | grep '\[mux\]'
并杀死相关的人。
答案 10 :(得分:0)
我也碰到了这个,导致这个问题的原因是,在克隆回购邮件时我正在推动我的更改,我从一个隐身标签中选择了克隆网址而没有登录。(我仍然对它如何影响一无所知)。由于某种原因导致git选择另一个用户帐户。 当我从正确的登录页面再次尝试时,它对我来说就像往常一样。
答案 11 :(得分:0)
当我使用Travis CI到deploy content时遇到此错误,该错误涉及将编辑推送到存储库。
我最终通过使用public_repo
范围访问权限更新与Travis帐户关联的GitHub personal access token来解决了该问题:
答案 12 :(得分:0)
对我来说,FAHID(对于Windows)和LEANNE(对于Mac)建议的解决方案仅适用。谢谢你们!
答案 13 :(得分:0)
我在我的 MAC 上工作时也碰巧遇到了这个问题 所以,问题是这个。我曾经从我的旧 GitHub 帐户之一登录。现在,我使用不同的 GitHub 帐户。 我使用以下步骤解决了-
再次尝试推送,它会起作用