【Git】解决git push时出现Permission to XXX/XXX.git denied to XXX的问题

我在自己的macgit push 数据进另一个账号(简称DF)在GitHub的仓库时出现了如下错误:

1
2
3
4
5
ERROR: Permission to XXX/XXX.git denied to DragonFlyXD.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

究其原因,是因为我自己的GitHub账号已经绑定了我这台macSSH公钥

而多个账号不能同时绑定同一个SSH公钥,因为访问DF的仓库时,GitHub不能区分是谁在安全登录。

解决方法如下:

  • 换台没有给GitHub绑定过SSH公钥的电脑,然配之即可。
  • 利用自己这台mac再生成一个SSH密钥,然绑定DFGitHub账号并作SSH的用户配置。

以下就简述第二种解决方法。

  • 首先生成一个SSH密钥,并绑定至DFGitHub的账户。

    如何配置SSH密钥GitHub账户,请参考我以前写的一篇博文,这里不做赘述。

  • 配置SSH的用户配置。

    其用户配置文件在 ~/.ssh/config ,若无该 config 文件可手动生成一个,如:

    touch ~/.ssh/config

    配置具体语法如下:

    1
    2
    3
    4
    Host 别名
    HostName 主机名
    User 用户名
    IdentityFile SSH私钥文件的路径

    这样配置有什么好处,如我有个阿里云的服务器。

    以前登录都要 ssh xxx@xxx ,如今只需要 ssh Host(别名) 即可。

    ok,配置DF的用户配置,如下所示:

    1
    2
    3
    4
    Host df
    HostName github.com
    User git
    IdentityFile ~/.ssh/df_rsa
  • 添加远程仓库时,使用SSH Host(别名)

    如下为原本语法:

    1
    git remote add origin git@github:xxx/xxx.git

    修改如下即可:

    1
    git remote add origin df:xxx/xxx.git

    注意这里的 df 即为之前配置的SSH Host(别名)


若做完如上操作后,发现还是报 Permission to XXX/XXX.git denied to XXX. 的错误。

请清除本地仓库,如 rm -rf .git ,然后再重新生成本地仓库,继续执行上述操作即可。