我尝试了谷歌搜索,并阅读了https://help.github.com/en/articles/connecting-to-github-with-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
。9. 我是,不是,位于代理或防火墙后面
10. 提供了密钥,这是
-v
的输出: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 token :
$ git config --global github.user medero
$ git config --global github.token 0123456789yourf0123456789token设置系统上所有git实例的GitHub token
16. 我已经确认我的github用户名不是
mederot
,并且我的github token 在每个帐户页面上都是正确的(已验证的前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服务!它必须被缓存吗? 最佳答案
在步骤18中,我假设您的意思是ssh-add ~/.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“那个密钥文件”将其删除