Git ERROR:对user2拒绝user1 / repoA.git的权限

时间:2015-10-05 21:49:54

标签: git heroku ssh configuration

我有两个github帐户,我正在尝试配置github,我的环境和ssh密钥,以便我能够推送到任何仓库,无论它位于我的github.com/user1或github.com/ user2帐户。我花了好几个小时试图在我能找到的所有资源之后做到这一点,唉,我似乎缺乏理解来解决这个问题。任何人都可以帮我正确配置这个配置吗?

我在github.com上的两个帐户中的每个帐户都设置了不同的电子邮件地址; github.com/user1 = 'user1@user1.comgithub.com/user2 = user2@user2.com

我有两个生成的SSH密钥,.ssh/id_rsa& .ssh/id_rsa.pub此SSH密钥保存在github.com/user1中。 .ssh/user2 .ssh / user2_rsa and saved in github.com / user1`中的第二个SSH密钥。

我有.ssh/config file,其中包含:

Host user1.github.com
 HostName github.com
 IdentityFile ~/.ssh/user1
Host user2.github.com
 HostName github.com
 IdentityFile ~/.ssh/id_rsa

当我运行ssh-add -l时,我发现两个密钥都已加载'。

当我运行ssh -T git@user1.github.com时,我得到Hi user2! You've successfully authenticated, but GitHub does not provide shell access.

当我运行ssh -T git@user2.github.com时,我得到Hi user2! You've successfully authenticated, but GitHub does not provide shell access.

我可以成功地推送到' github.com/user2'。

我无法在' github.com/user1'中推送回购,并显示以下错误消息;

ERROR: Permission to user1/repo.git denied to user2.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我的`.gitconfig'文件包含:

[user]
    name = my full name 
    email = user1@user1.com
[GitHub]
   user = user1

从我可以看到,似乎我的本地环境cmd让我卡在了user2,并且不允许user2提交到user1 github帐户。但是a)我认为.ssh/config中的脚本应该认识到当我推送到user1时它应该使用user1 ssh而反之亦然,但这似乎并没有发生并且b)我的{{1我的.gitcofig和我的GitHub用户作为user1与我在运行user.email后作为user2进行身份验证时发生冲突。

我已经尝试过很多东西,我的短裤现在正好适合这个。任何人都可以让我正确设置这个,或者指导我如何擦除所有SSh并重新开始并正确设置(注意我还需要配置一个Heroku帐户)

提前致谢。

2 个答案:

答案 0 :(得分:1)

  

.ssh/user2 .ssh/user2_rsa

中的第二个SSH密钥

然而,.ssh/config使用id_rsa user2.github.com

Host user2.github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa
                      ^^^^^^

并且user1.pub公钥似乎已在user2帐户中注册,因为ssh -T git@user1.github.com会返回Hi user2!

检查您的本地配置,并同时检查github端哪个公钥已添加到哪个帐户。

答案 1 :(得分:1)

在Linux平台上

该问题已经很好地说明了确切的问题是什么。 另外,@ VonC也很好地回答了这个问题。 我只想添加一些信息,可能会对像我这样的其他菜鸟有所帮助。

  • 首先,默认情况下不会生成〜/ .ssh /目录中的配置文件。在我的情况下,默认情况下不存在该文件,但是可以通过导航到.ssh目录(或者直接访问,也可以根据需要)并执行命令来轻松创建一个文件。

    nano config

然后只需粘贴上面问题中提到的内容即可。

Host user1.github.com
 HostName github.com
 IdentityFile ~/.ssh/user1
Host user2.github.com
 HostName github.com
 IdentityFile ~/.ssh/user2

在创建像“ id_rsa”这样的SSH密钥时,我建议不要使用默认名称。如果您在创建SSH密钥时未指定任何名称,它将命名为'id_rsa',然后在稍后您尝试回想为其创建密钥的应用程序时会产生混淆。最好重命名“ github_user1”之类的键或类似的名称(让您的想像力发疯)。

在此之后,您可以使用cmd测试您的密钥

ssh -T git@user1.github.com

应该返回

Hi user1! You've successfully authenticated, but GitHub does not provide shell access.

与user2类似。

  • 第二,如果系统在 对于第二个用户进行身份验证,这听起来可能有些陈词滥调,但简单 重新启动您的linux系统。每次我们启动系统并使用 SSH密钥,操作系统会缓存使用的SSH密钥并重新启动系统 清除缓存。不过,您也可以使用cmd清除缓存。