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

使用多个id_rsa文件(SSH-KEYGEN)推送github,github,git-push,private-key,git-clone,ssh-keygen,Github,Git Push,Private Key,Git Clone,Ssh Keygen,我使用以下命令在我的MAC上生成SSH密钥 ssh-keygen -t rsa -b 4096 -C "<myemail to github>" ssh-keygen-t rsa-b4096-C“” 我想为我的两个GitHub帐户创建两个SSH密钥,然后分别使用它们推送到各个GitHub帐户。但当我默认创建SSH-keygen文件时,id\u rsa文件用于登录,这只允许一个git帐户连接 请帮助我在将代码推送到GitHub存储库时如何提供正确的SSH密钥文件

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

ssh-keygen -t rsa -b 4096 -C "<myemail to github>"
ssh-keygen-t rsa-b4096-C“”
我想为我的两个GitHub帐户创建两个SSH密钥,然后分别使用它们推送到各个GitHub帐户。但当我默认创建SSH-keygen文件时,id\u 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\u rsa\u 1用于名为user\u 1的GitHub帐户,而id\u rsa\u 2将用于user\u 2

步骤:

  • .pub
    文件的内容复制到GitHub中的相应帐户:
    设置->SSH密钥->新建SSH密钥->在文本框中粘贴密钥
  • 编辑(如果不存在,则创建)文件
    /home/userName/.ssh/config
    。我们将为每个GitHub帐户分配单独的别名,并将它们映射到GitHub.com。我们将调用别名host_1host_2
    config
    文件应如下所示:
  • 现在,我们可以使用
    config
    文件中指定的别名克隆存储库。如果帐户用户_1下有名为repo_1的回购,则可以使用以下命令克隆该回购:
  • 同样,对于user_2下的repo_2:


    希望发生的事情是清楚的:在远程主机上运行
    git
    命令,使用
    ssh
    语法告诉git使用ssh作为其传输。当SSH在配置文件中找到远程设备的DNS名称时,它会发现它实际上应该连接到github.com,并使用密钥
    /home/userName/.SSH/id\u rsa\N
    进行身份验证。

    每次运行
    SSH-keygen
    “?是,当它询问文件名时,我指定了不同的文件名,但不确定登录时如何使用该文件。”
    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
    
    git clone git@host_1.github.com:user_1/repo_1
    
    git clone git@host_2.github.com:user_2/repo_2