GitHub:多帐户设置

GitHub:多帐户设置,github,Github,从3个多小时以来,我一直在尝试为github建立多个帐户,但我几乎累了。我已经尝试了几乎所有可能的方式来描述这里,github和文章,但没有一个有效。我对github和Unix也完全是新手。所以我需要你的帮助来解决这个问题。下面是我正在做的事情 我使用的是Windows7,为两个不同的帐户设置了两个ssh密钥 id_rsa id\u rsa\u ac2 然后在用户的.ssh目录中创建了配置文件,并添加了以下代码 #Account one Host github.com HostName

从3个多小时以来,我一直在尝试为github建立多个帐户,但我几乎累了。我已经尝试了几乎所有可能的方式来描述这里,github和文章,但没有一个有效。我对github和Unix也完全是新手。所以我需要你的帮助来解决这个问题。下面是我正在做的事情

我使用的是Windows7,为两个不同的帐户设置了两个ssh密钥

  • id_rsa
  • id\u rsa\u ac2
  • 然后在用户的
    .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