实习开发中我们可能一个机子上配置多个git账号,如github.com,oschina.com 或者工作账号,私人账号,这时候就2个账号用一个key,肯定会冲突,有一个会提示没权限(账号和密码对应不上)
ssh key-gen 命令学习
如:
ssh key-gen -t rsa -C "comment"
密钥的类型 : -t = The type of the key to generate
识别密钥的注释:-C = comment to identify the key
密钥注释你可以输入任何内容
解决方案:配置两套key
1.生成第一套
- 生成ssh key
使用git bash 进行操作
ssh-keygen -t rsa -C "xxxxx@qq.com"
- 生成和部署gitLab的SSH key
在~/.ssh/目录下生成id_rsa.pub公钥添加到github的ssh秘钥处。
.ssh 目录在 C盘 用户/username/目录下
- 测试gitLab的SSH秘钥是否部署成功
ssh -T github.com
2.生成第二套
- 生成ssh key
ssh-keygen -t rsa -f ~/.ssh/id_rsa_work -C "yyyyy@qq.com"
使用 -f 参数,明生产文件的名称。否则会生成同名文件 id_rsa ,会覆盖之前生产的。
- 生成和部署gitLab的SSH key
在~/.ssh/目录下生成id_rsa_work.pub公钥添加到github的ssh秘钥处。
- 测试gitLab的SSH秘钥是否部署成功
ssh -T git@139.198.189.75
这里的139.198.189.75是公司内部的gitLab的地址
3.添加秘钥到SSH Agent
因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加的SSH agent中。
ssh-agent bash
ssh-add ~/.ssh/id_rsa
## 可以通过ssh-add -l来确认结果
ssh-add ~/.ssh/id_rsa_work
## 可以通过ssh-add -l来确认结果
4.创建并配置config文件
在.ssh目录下创建一个config文本文件,添加相关配置
主要有以下配置:
- HostName 这个是真实的域名地址
- IdentityFile 这里是id_rsa的地址
vi .ssh/config
# 加上以下内容
# 配置 gitLab
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa
PreferredAuthentications publickey
User Boy-A
# 配置工作
Host 139.198.189.75:88
HostName 139.198.189.75:88
IdentityFile ~/.ssh/id_rsa_work
PreferredAuthentications publickey
User Boy-B
该文件的主要作用就是指明各个git帐号对应的User以及IdentityFile的文件位置。当配置完毕后,在各个项目repo中应用自己的用户名以及邮箱
其中 上面的 IdentityFile 可以用绝对地址,如 /c/Users/shellay/.ssh/id_rsa ,在.ssh 目录下使用 pwd 获取
5.用户名和邮箱的配置
因为一台电脑上配置了多个git账号,所以就不能再配置全局的用户名和邮箱了,而是在不同的仓库下,如果需要连接不同的git账号,配置相应的局部用户名和邮箱即可,如果之前配置过全局的用户名和邮箱,需要取消global配置
git config --global --unset user.name
git config --global --unset user.email
全局配置在 C:/用户/username/gitconfig 文件中
配置局部的用户名和邮箱
git config user.name "xxxx"
git config user.email "xxxx@xx.com"
局部配置都在 当前项目中的 .git/config 文件中