详情请点阅读全文
@TOC
一、基础设置
1.生成账号1密钥
1 2 3 4 5 6
| ssh-keygen -t rsa -C "one@qq.com"
|
2.生成账号2密钥
1
| ssh-keygen -t rsa -C "two@qq.com" -f /c/Users/Administrator/.ssh/id_rsa_two
|
3.会在文件夹(C:\Users\Administrator.ssh)看到对应四个文件:
.pub的是公钥,其它两个是私钥不能泄漏给他人
1 2 3 4
| id_rsa id_rsa.pub id_rsa_two id_rsa_two.pub
|
4.把公钥放到对应的账号上
1.把id_rsa_two.pub加到你的第2个账号上
2.把id_rsa.pub放到你的第1个git账号上
3.在git上右上图标setting—ssh—new ssh key
5.把该key加到ssh agent上。
1.由于不是使用默认的.ssh/id_rsa,所以你需要显示告诉ssh agent你的新key的位置
1 2 3 4 5 6 7 8
| ssh-agent bash
ssh-add ~/.ssh/id_rsa_tow
ssh-add id_rsa_two
|
2. 可以通过ssh-add -l
来确认结果
6.新建并配置.ssh/config
说明
1 2 3 4 5 6
| 说明: # 注释 Host 为域名别名 Hostname:真实地址 User:用户名 IdentityFile:rsa存放地址
|
a) windows实际内容
1 2 3 4 5 6 7 8 9
| Host github HostName github.com IdentityFile C:\Users\Administrator\.ssh\id_rsa
Host github_two HostName github.com IdentityFile C:\Users\Administrator\.ssh\id_rsa_two
|
b) linux实际内容
1 2 3 4 5 6 7 8 9
| Host github.com HostName github.com IdentityFile ~/.ssh/id_rsa
Host github_two HostName github.com IdentityFile ~/.ssh/id_rsa_two
|
7.测试配置是否生效
1 2 3 4 5
| $ ssh -T git@github
$ ssh -T git@github_two
|
8.这样,你就可以通过使用github.com别名github_two
来明确说你要是使用id_rsa_two的SSH key来连接github,即使用工作账号进行操作
命令:git remote add origin git@github_two:xxxx/test.git
1 2 3 4 5 6 7
| #本地建库 $ git init $ git commit -am "first commit'
#push到github上去 $ git remote add origin git@github_two:xxxx/test.git $ git push origin master
|
二、进阶:8步也可以如下设置
1.清除git的全局设置(2.3二选一)
使用 git config --list
查看当前配置。
如果你之前在设置本地仓库和github连接的时候设置过user.name和user.email,那么你必须首先清除掉该设置,因为不清除掉该设置,两个账号在提交资料的时候,验证肯定冲突。
只能设置一个全局的user.name和user.email,而你现在有两个账号。
【清除全局】:
1 2
| $ git config --global --unset user.name $ git config --global --unset user.email
|
2.当前项目设置用户名邮箱(如选此步,3略过)
1 2 3 4 5 6
| $ git config user.name 'sky_two' $ git config user.email 'sky_two@qq.com'
git remote add origin git@github_two:xxxx/test.git
之后操作和一个账号就一样了
|
3. 设置每个项目repo自己的user.email(ab二选一)
GitHub提供了两种方法来保护我们的邮箱隐私:使用GitHub专用的替代邮箱
a) 添加隐私邮箱
如果勾选第1项,且不勾选第2项,要push成功,git这样设置:
1 2 3 4 5
| $ git config user.email "sky_one@gmail.com" $ git config user.name "sky_one"
$ git config user.email "sky_two@126.com" $ git config user.name "sky_two"
|
git设置的邮箱尽量和github的邮箱保持一致
b) 在推送时发现隐私邮箱则阻止推送
如果勾选第2项,要push成功,要么去掉第一项勾选,要么把修改git设置:
1 2 3 4 5
| $ git config user.email "sky_one@users.noreply.github.com" $ git config user.name "sky_one"
$ git config user.email "sky_two@users.noreply.github.com" $ git config user.name "sky_two"
|