2

简短版本:

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


我有两个 Github 帐户,一个是工作帐户,一个是个人帐户,我想将它们完全分开。

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

当我尝试将相同的 ssh 密钥添加到我的个人 Github 帐户时,我收到“密钥已在使用中”的错误消息。

编辑:好的,我想一个人可能能够通过适当的设置来做我想做的事情~/.ssh/config,但我还没有弄清楚这些应该是什么。User一方面,我不清楚如何IdentityFile为同一个主机(github.comgit push

4

2 回答 2

2

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

您可以通过 ssh 配置文件引用它们,详见“ GitHub:多帐户设置”/

#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
于 2013-02-04T07:12:02.580 回答
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'\'
于 2015-03-14T16:46:53.830 回答