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

use multiple id_rsa files (SSH-KEYGEN) to push on github

我正在使用以下命令在我的 MAC

上生成 SSH 注册机
ssh-keygen -t rsa -b 4096 -C "<myemail to github>"

我想为我的两个 GitHub 帐户创建两个 SSH-keygen,然后分别使用它们推送到个人 GitHub 帐户。但是当我默认创建 SSH-keygen 文件时 id_rsa 文件用于登录,它只允许一个 git 帐户连接。

请帮助我如何在将代码推送到 GitHub 存储库时提供正确的 SSH-keygen 文件。

假设您的主目录是 /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[=59 的 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

同样,对于repo_2user_2下:

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

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