简短版本:
有没有办法从一个Linux帐户到两个不同的Github帐户设置基于公钥的自动ssh身份验证?
我有两个Github帐户,一个工作帐户和一个个人帐户,我想保持完全分开。
我已经在我的工作Github帐户中设置了自动ssh身份验证(使用我的〜/ .ssh / id_rsa.pub)。它工作正常。
当我尝试将相同的ssh密钥添加到我的个人Github帐户时,我收到错误,即"密钥已被使用。"
编辑:好的,我想我可以通过~/.ssh/config
中的合适设置做我想做的事情,但我还没弄清楚这应该是什么。首先,我不清楚如何为同一主机(User
)指定两个不同的身份验证详细信息(IdentityFile
,github.com
),一旦我这样做,我不知道当我git push
时git知道要呈现的两个键中的哪一个。
答案 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'\'