我正在使用以下命令在我的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。
步骤:
- 将
.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
类似地,对于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
进行身份验证。