【问题标题】:use multiple id_rsa files (SSH-KEYGEN) to push on github使用多个 id_rsa 文件(SSH-KEYGEN)推送到 github
【发布时间】:2020-11-06 01:51:57
【问题描述】:

我正在使用以下命令在我的 MAC 上生成 SSH-Keygen

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

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

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

【问题讨论】:

  • 每次运行ssh-keygen"时是否指定不同的文件名?
  • 是的,当它询问文件名时,我指定了不同的文件名,但不确定登录时如何使用该文件

标签: github git-push private-key git-clone ssh-keygen


【解决方案1】:

假设您的主目录是/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中的各个账户:
    Settings -> SSH Keys -> New SSH Key -> 在文本框中粘贴密钥
  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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 2019-05-21
    • 2017-12-06
    • 1970-01-01
    • 2021-07-10
    • 2021-05-28
    相关资源
    最近更新 更多