Github下使用多个SSH Key
---
我们首先来了解一下,什么是SSH KEY?
>SSH 密钥对总是成双出现的,一把公钥,一把私钥。公钥可以自由的放在您所需要连接的 SSH 服务器上,而私钥必须稳妥的保管好。
>所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。这样子,我们即可保证了整个登录过程的安全,也不会受到中间人攻击。
当我们在本地需要用不同的账户对Github上不同的项目进行提交,那么就涉及到在本地使用多个SSH KEY了,生成一个SSH Key的方法如下:
ssh-keygen -t rsa -C "mailname1@xxx.com"
上面这个email地址就是你在github上注册该账号时使用的email,系统会提示你,是否将key保存在 `~/.ssh/id_rsa` 这个文件中,如果这是你第一次生成SSH KEY,并且也你也只有一个账号,那么就可以存储到这个默认的位置,如果有多个账号的话,建议保存为`~/.ssh/id_rsa_emailname1`,方便以后识别。
如果有多个Github的账号,那么继续生成一个SSK Key,并保存在`~/.ssh/id_rsa_emailname2`这个文件下。
ssh-keygen -t rsa -C "mailname2@xxx.com"
当生成了N个账号的SSH KEY并保存到相应的文件中时,在`~/.ssh`文件夹下建立一个`config`文件,该文件用来指明,当使用某个账号时对应使用哪个SSH KEY
```bash
Host github.com_mailname1
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_mailname1
Host github.com_mailname2
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_mailname2
```
为了在版本库提交时,能够通过相应的Host找到与之对应的SSH KEY,我们还需要对版本库中的配置文件`.git/config`进行修改。比如,某个版本库使用的账号是`mailname1`这个邮箱地址注册的,那么我们就要将其配置文件中原来的
url = git@github.com:xxxxxxxxx
修改为
url = git@github.com_mailname1:xxxxxxx
这样,当我们提交这个版本库时,版本库会根据`github.com_mailname1`对应到`~/.ssh/config`文件中的相应HOST,并使用相应的SSH KEY。