使用多个id_rsa文件(SSH-KEYGEN)在github上推送



我正在使用以下命令在我的MAC 上生成SSH密钥

ssh-keygen -t rsa -b 4096 -C "<myemail to github>"

我想为我的两个GitHub帐户创建两个SSH密钥生成,然后分别使用它们推送到单个GitHub账户。但当我创建SSH密钥根文件时,默认情况下,id_rsa文件用于登录,只允许一个git帐户连接。

请帮助我了解如何在将代码推送到GitHub存储库的同时提供正确的SSH密钥根文件。

假设您的主目录是/home/userName,ssh密钥存储在.ssh子目录(Linux上的默认位置(中。首先,生成不同名称的SSH密钥:

ssh-keygen -t rsa -b 4096 -f /home/userName/.ssh/id_rsa_1
ssh-keygen -t rsa -b 4096 -f /home/userName/.ssh/id_rsa_2

这将创建以下关键文件:

/home/userName/.ssh/id_rsa_1
/home/userName/.ssh/id_rsa_1.pub
/home/userName/.ssh/id_rsa_2
/home/userName/.ssh/id_rsa_2.pub

我们还假设id_rsa_1用于名为user_1的GitHub帐户,而id _rsa_2将用于user_2

步骤:

  1. .pub文件的内容复制到GitHub中的相应帐户:
    设置->SSH密钥->新SSH密钥->在文本框中粘贴键
  2. 编辑(如果不存在,则创建(文件/home/userName/.ssh/config。我们将为每个GitHub帐户分配单独的别名,并将它们映射到GitHub.com。我们将称这些别名为host_1host_2config文件应如下所示:
Host host_1.github.com
HostName github.com
User git
Port 22
IdentityFile /home/userName/.ssh/id_rsa_1
Host host_2.github.com
HostName github.com
User git
Port 22
IdentityFile /home/userName/.ssh/id_rsa_2
  1. 现在我们可以使用config文件中分配的别名克隆存储库。如果帐户user_1下有一个名为repo_1的repo,则可以使用以下命令进行克隆:
git clone git@host_1.github.com:user_1/repo_1

类似地,对于user_2下的repo_2

git clone git@host_2.github.com:user_2/repo_2

希望清楚发生了什么:使用ssh语法在远程host_N.github.com上运行git命令告诉git使用SSH作为其传输。当SSH在配置文件中找到远程的DNS名称时,它会发现它实际上应该连接到github.com并使用密钥/home/userName/.ssh/id_rsa_N进行身份验证。

最新更新