如何为同一个ssh客户端的两个单独的GitHub帐户设置身份验证?

时间:2013-02-03 23:33:20

标签: github ssh ssh-keys

简短版本:

  

有没有办法从一个Linux帐户到两个不同的Github帐户设置基于公钥的自动ssh身份验证?


我有两个Github帐户,一个工作帐户和一个个人帐户,我想保持完全分开。

我已经在我的工作Github帐户中设置了自动ssh身份验证(使用我的〜/ .ssh / id_rsa.pub)。它工作正常。

当我尝试将相同的ssh密钥添加到我的个人Github帐户时,我收到错误,即"密钥已被使用。"

编辑:好的,我想我可以通过~/.ssh/config中的合适设置做我想做的事情,但我还没弄清楚这应该是什么。首先,我不清楚如何为同一主机(User)指定两个不同的身份验证详细信息(IdentityFilegithub.com),一旦我这样做,我不知道当我git push时git知道要呈现的两个键中的哪一个。

2 个答案:

答案 0 :(得分:2)

您需要创建两组(公钥/私钥),每个帐户一个。

您可以通过ssh配置文件引用它们,详见“GitHub: Multiple account setup”/

#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

答案 1 :(得分:0)

似乎GitHub不允许两个存储库使用相同的RSA密钥。

作为解决方法,您需要为每个站点创建单独的RSA密钥:

ssh-keygen -t rsa -f rsa_site1
ssh-keygen -t rsa -f rsa_site2

这将生成私钥和公钥。然后将公钥添加到GitHub中以部署密钥。

然后将您的私钥部署到遥控器:

cat rsa_site1 | ssh user@remote "cat > ~/.ssh/rsa_site1 && chmod 600 ~/.ssh/rsa_site1"
cat rsa_site2 | ssh user@remote "cat > ~/.ssh/rsa_site2 && chmod 600 ~/.ssh/rsa_site2"

要在服务器上获取私有存储库,您可以使用以下内容:

ssh user@remote 'ssh-agent sh -c '\''cd /webroot/site1 && ssh-add ~/.ssh/rsa_site1 && git fetch git@github.com:priv/site1.git'\'
ssh user@remote 'ssh-agent sh -c '\''cd /webroot/site2 && ssh-add ~/.ssh/rsa_site2 && git fetch git@github.com:priv/site2.git'\'