我尝试了谷歌搜索,并阅读了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



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 KAKAmv ~/.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不允许这样做。)

因此,我怀疑(按可能性从高到低的顺序)是以下情况之一:

  • 您先前创建了mederot帐户,并向其中添加了SSH密钥。
  • 其他人已经获得了您的公共(public)密钥的副本,并将其添加到了mederot GitHub帐户中。
  • GitHub中有一个可怕的错误。

  • 如果不是1,那么我将报告给GitHub,这样他们就可以检查2或3。

    更多 :

    ssh-add -l检查是否存在多个标识
    如果是,请通过ssh-add -d“那个密钥文件”将其删除

    08-05 02:47
    查看更多