我有两个github帐户,我正在尝试配置github,我的环境和ssh密钥,以便我能够推送到任何仓库,无论它位于我的github.com/user1或github.com/ user2帐户。我花了好几个小时试图在我能找到的所有资源之后做到这一点,唉,我似乎缺乏理解来解决这个问题。任何人都可以帮我正确配置这个配置吗?
我在github.com上的两个帐户中的每个帐户都设置了不同的电子邮件地址; github.com/user1 = 'user1@user1.com
和github.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帐户)
提前致谢。
答案 0 :(得分:1)
中的第二个SSH密钥
.ssh/user2 .ssh/user2_rsa
然而,.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类似。