如何使用多个ssh密钥

13 浏览
0 Comments

如何使用多个ssh密钥

GitHub用户们,

我是GitHub的新手,对于Git设置有一些问题。

我在GitHub上有两个不同用户的账号,并且我在我的系统上设置了两次Git。

第一个/.ssh文件夹(通常的位置)(包含在第一个账号中复制的id_rsa)
第二个/.ssh/new文件夹(包含在第二个账号中复制的id_rsa)

现在在推送的时候,我如何在SSH密钥之间切换?

因为如果我想要推送到第二个账号,它会使用.ssh密钥而不是.ssh/new,从而导致错误。

如果我有什么误解,请纠正我。

谢谢。

0
0 Comments

如何处理多个SSH密钥

在使用SSH传输时,GitHub会根据您用于身份验证的SSH密钥来识别您。因此,您需要确保git在一个仓库中使用一个SSH密钥,而在另一个仓库中使用另一个SSH密钥。

假设您有一个名为"user1"的GitHub账户,并且您已向该账户添加了与本地私钥"/home/whoever/.ssh/id_rsa"对应的公钥。假设您希望访问的仓库是GitHub上的"user1/whatever"。

您还有一个名为"user2"的第二个GitHub账户,并且您已向该账户添加了与本地私钥"/home/whoever/.ssh/new/id_rsa"对应的公钥。假设您希望访问的仓库是GitHub上的"user2/whatever"。

处理这种情况最简单的方法是为每个仓库创建一个新的"remote"(即远程仓库的别名),其中每个远程仓库的URL中的主机名实际上是您在"~/.ssh/config"中设置的别名。(如果该配置文件不存在,则必须创建它。)

例如,"~/.ssh/config"文件中的一个条目可能如下所示:

Host github-as-user1
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/id_rsa

然后,您可以使用以下命令添加一个名为"gh-user1"的远程仓库:

git remote add gh-user1 git-as-user1:user1/whatever.git

如果您想使用"~/.ssh/id_rsa"密钥将"master"分支推送到GitHub上的仓库"user1/whatever",只需执行以下命令:

git push gh-user1 master

要以另一个用户("user2")的身份推送到第二个仓库,您需要在"~/.ssh/config"文件中添加第二个别名。例如:

Host gh-as-user2

HostName github.com

User git

IdentityFile /home/whoever/.ssh/new/id_rsa

然后,要以不同用户的身份推送到第二个仓库,只需执行以下命令:

git push gh-user2 master

如果git不能正常工作,没有.ssh/config文件怎么办?为什么git不能像标准SSH一样接受一个参数,比如-i .ssh/my_github_key?

我想补充一点,可以通过"ssh -T git-as-user1"和"ssh -T git-as-user2"进行测试。如果不起作用,请尝试运行"ssh-add ~/.ssh/new/id_rsa"或"ssh-add ~/.ssh/id_rsa"。

如果您使用的密钥存在于~/.ssh目录之外,除非执行"ssh-add /path/to/key",否则它们将无法正常工作。

0