GitHub:多帐户设置
从3个多小时以来,我一直在尝试为github建立多个帐户,但我几乎累了。我已经尝试了几乎所有可能的方式来描述这里,github和文章,但没有一个有效。我对github和Unix也完全是新手。所以我需要你的帮助来解决这个问题。下面是我正在做的事情 我使用的是Windows7,为两个不同的帐户设置了两个ssh密钥GitHub:多帐户设置,github,Github,从3个多小时以来,我一直在尝试为github建立多个帐户,但我几乎累了。我已经尝试了几乎所有可能的方式来描述这里,github和文章,但没有一个有效。我对github和Unix也完全是新手。所以我需要你的帮助来解决这个问题。下面是我正在做的事情 我使用的是Windows7,为两个不同的帐户设置了两个ssh密钥 id_rsa id\u rsa\u ac2 然后在用户的.ssh目录中创建了配置文件,并添加了以下代码 #Account one Host github.com HostName
.ssh
目录中创建了配置文件,并添加了以下代码
#Account one
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile /c/Projects/.ssh/id_rsa
#Account two
Host ac2.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile /c/Projects/.ssh/id_rsa_ac2
git remote add origin git@ac2.github.com:myaccount/my.git
现在我正试图使用下面的代码添加remote
#Account one
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile /c/Projects/.ssh/id_rsa
#Account two
Host ac2.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile /c/Projects/.ssh/id_rsa_ac2
git remote add origin git@ac2.github.com:myaccount/my.git
并按下面的代码
git push origin master
但当我试图推动它时,它给了我错误:
错误:对{account}的myaccount/my.git权限被拒绝。//它正在考虑默认用户帐户,而不是ac2用户帐户
致命:无法从远程存储库读取。
请确保您拥有正确的访问权限,并且存储库存在。
非常感谢
其他信息:
我已经测试了id\u rsa\u ac2
,并给出了成功验证的消息。但奇怪的是,使用原始帐户提供用户名,而不是使用ac2
帐户用户名
Hi{username!}您已成功通过身份验证,但GitHub不提供shell访问//这里的用户id应该来自ac2,但它显示的是来自id\u rsa而不是来自id\u rsa\u ac2的用户id
信息:最终代码
@VonC的答案有效,如果有人想使用,请添加最终代码作为我的答案。要考虑您的配置,您需要在远程地址中使用其
主机名:
git remote add origin ac2.github.com:myaccount/my
如果您已将HOME
环境变量(在Windows上默认情况下未定义,但在使用时已定义)定义为.ssh目录下的目录,其id\u rsa\u ac2
私钥和id\u rsa\u ac2.pub
公钥,然后它就会起作用。因此,根据@VonC在这里的回答,我已经做了些什么
我已为另一个帐户生成ssh密钥并添加了
id\u rsa\u ac2(其中ac2用于第二个帐户)
而不仅仅是交叉检查,它可以与ssh-tac2.github.com一起工作
在中创建了配置文件(不带扩展名)
/c/Users/yourname/.ssh/目录
下面是我用于配置文件的代码
#Account one
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile /c/Users/yourname/.ssh/id_rsa
User git
#Account two
Host ac2.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile /c/Users/yourname/.ssh/id_rsa_ac2
User git
所以现在,一旦你这样做了,你可以开始使用这两个帐户,因为你需要
对于主帐户,我使用git remote add origin将remote添加为origingit@github/您的帐户/rep.git
而不是推送使用git推送原始主机
这将上载到您的第一个帐户
要添加使用的第二个远程(ac2)帐户,请使用git remote add ac2 ac2.github/yoursecondaccount/rep.git
而不是使用推送git推送ac2主机
这将上载到第二个(ac2)帐户
检查它是否添加了远程使用git remote-v
,如果您想删除任何人,请使用git remote rm origin
,其中origin是您添加的远程设备
希望这些信息能对其他有同样问题的人有所帮助
再次感谢@VonC这里有一个脚本,可以自动将两个GitLab帐户添加到您的设置中 及
git克隆git@gitlab-工作:/.git
分别使用。我正在使用这个脚本,它切换身份和其他所有必要的设置,如git设置
帮了大忙!这件事已经做完了,而且两个帐户都在工作。仅就知识而言,我必须在您描述的定义
用户git
的地方使用您的两个答案。谢谢lot@VonC我留下了另一个答案,里面有一个脚本,可以让一切都自动化。(虽然过程有点不同,但它适用于GitLab,我假设GitHub也是如此。)如果您认为我应该添加,请告诉我anything@CodeLover6年后,我的答案还不够好?我同意,其他答案有所改进,但我仍然回答了你原来的问题question@VonC这与此无关,而是通过详细的步骤选择对其他人更有用的答案。无论如何,我再次选择了你的答案。@CodeLover同意:请选择你认为对用户有帮助的答案。昨天我很惊讶;)都是因为你!再次感谢您的大力帮助和赞赏:)@CodeLover我留下了另一个答案,里面有一个脚本,可以让一切都自动化。(虽然过程有点不同,但它适用于GitLab,我也假设GitHub。)如果您认为我应该添加什么,请告诉我。
git clone git@gitlab-work:<account>/<project>.git
if [[ -f ~/.ssh/.work ]]; then
echo "swith to HOME"
# mv ~/.ssh/id_rsa ~/.ssh/work; mv ~/.ssh/home ~/.ssh/id_rsa
rm ~/.ssh 2> /dev/null
ln -s ~/.ssh-work/home ~/.ssh
git config --global user.email "my.name@gmail.com"
else
echo "swith to WORK"
# mv ~/.ssh/id_rsa ~/.ssh/home; mv ~/.ssh/work ~/.ssh/id_rsa
rm ~/.ssh 2> /dev/null
ln -s ~/.ssh-work/work ~/.ssh
git config --global user.email "my.name@company.eu"
fi
# Delete all identities from ssh-agent
ssh-add -D
# Add new identity to ssh-agent
ssh-add