两个仓库,github上一个,gitlab上一个,用户名与密码不同,而且两个项目都需要处理。这时候就需要配置多个用户,进行不同仓库的操作。
1. 清除之前的全局配置
# 列出全局用户名,邮箱配置
git config --global --list
# 重置用户名和邮箱
git config --global --unset user.name
git config --global --unset user.email
2. 生成新的秘钥
删除旧的秘钥: 旧的秘钥存放在用户目录的.ssh文件夹中,删除其中的 id_rsa
、id_rsa.pub
之类的公钥和密钥文件。
生成新的秘钥:
cd ~/.ssh
ssh-keygen -t rsa -C "123456@qq.com"
#设置文件名,自动生成私钥和公钥(.pub)
Enter file in which to save the key ((/c/Users/Administrator/.ssh/id_rsa)): id_rsa_github
#将ssh key添加到SSH agent中
ssh-add ~/.ssh/id_rsa_github
报错:Could not open a connection to your authentication agent.解决方法
ssh-agent bash
3. 添加ssh key
将公钥配置到github和gitlab中。
cat ~/.ssh/id_rsa_gitlab.pub
4. 管理秘钥
在.ssh文件夹需要创建秘钥配置文件config,用来配置不同的秘钥连接不同的仓库。
Host github
HostName github.com
User binfenshengdai
IdentityFile ~/.ssh/id_rsa_github
PreferredAuthentications publickey
Host gitlab
HostName gitlab.mygitlab.com
User test
IdentityFile ~/.ssh/id_rsa_gitlab
- Host: 仓库的别名,可以随意取名
- HostName: 仓库网站的域名
- User: 仓库上面的用户名
- IdentityFile: 私钥的绝对路径
- PreferredAuthentications 配置登录时用什么权限认证
验证连接是否成功:
ssh -T git@github
ssh -T git@gitlab
5. 仓库配置
两种方案都可行,选其一即可
- a)、我们需要为每个仓库单独配置用户名信息,假设我们要配置 github 的某个仓库,进入该仓库后,执行:
git config --local user.name "username" #cat ~/.ssh/config
git config --local user.email "username@qq.com"
- b)、添加远程仓库的时候要注意了。 不能是用服务商提供的地址git@github.com:xxxx应该用 git@github (config中的Host)来替换 github.com 这个域名其它不变。