如何配置多个SSH秘钥

给本地电脑配多个SSH是一个比较常见的需求,但是在生成新的SSH文件时如果不注意配置,很容易踩到各种地雷。因此记录下此次的配置过程。

step1: 进入.ssh文件目录

1
cd ~/.ssh

step2: 查看.ssh目录下的文件,检查是否有id_rsa文件,若有则是已经存在秘钥

1
ls

step3: 注意这里生成的默认文件名为id_rsa,若第二步中已经有id_rsa,则在命令中输入新的文件夹名如id_rsa_new。然后一路回车(密码为空)。

1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

step4: 将新生成的ssh秘钥添加到ssh-agent账户中。

1
ssh-add ~/.ssh/id_rsa_new

step5: 配置.ssh目录下的config文件。用编辑器打开config文件。
编辑如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
Host github.com
User qingywen@gmail.com
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
Host github2
User 742925032@qq.com
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gh
Port 443

注意:这里的host名称是区别你的秘钥的id,当你改变host名称后,从git提交的地址也要改变。比如第一个的提交地址是git@github.com:qingywen/qingywen.github.io.git,第二个提交地址是git@github2:still-wait/still-wait.github.io.git

另:在此次的配置过程中,因为之前设置过全局用户名和邮箱,因此即使提交使用的是对应的邮箱地址的ssh,但远程库显示的提交源仍是全局的邮箱。即使在本地库已经设置过当前的用户名和邮箱。这一点有些绕,还没能理解。