使用多个 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.
步数:
- 将
.pub
文件的内容复制到 GitHub 中的相应帐户:
设置 -> SSH 密钥 -> 新的 SSH 密钥 -> 在文本框中粘贴密钥
- 编辑(如果不存在则创建)文件
/home/userName/.ssh/config
。我们将为每个 GitHub 帐户分配单独的别名,并将它们映射到 github.com。我们将调用别名 host_1 和 host_2。 config
文件应如下所示:
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
- 现在我们可以使用
config
文件中分配的别名克隆存储库。如果在账户user_1下有一个名为repo_1的repo,可以使用这个命令克隆它:
git clone git@host_1.github.com:user_1/repo_1
同样,对于repo_2在user_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
进行身份验证。
我正在使用以下命令在我的 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.
步数:
- 将
.pub
文件的内容复制到 GitHub 中的相应帐户:
设置 -> SSH 密钥 -> 新的 SSH 密钥 -> 在文本框中粘贴密钥 - 编辑(如果不存在则创建)文件
/home/userName/.ssh/config
。我们将为每个 GitHub 帐户分配单独的别名,并将它们映射到 github.com。我们将调用别名 host_1 和 host_2。config
文件应如下所示:
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
- 现在我们可以使用
config
文件中分配的别名克隆存储库。如果在账户user_1下有一个名为repo_1的repo,可以使用这个命令克隆它:
git clone git@host_1.github.com:user_1/repo_1
同样,对于repo_2在user_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
进行身份验证。