1. 清空默认全局的配置
1.1 查看当前的git列表
git config --list
1.2 清空默认的用户名和邮箱
git config --global --unset user.name
git config --global --unset user.email
2. 生成秘钥
- 我们需要给不同的git 账户生成对应的ssh-key
- 一个是公司的代码仓库使用
ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxx@<company_domain>.com -C "xxx@<company_domain>.com"
上述命令中,id_rsa_的 suffix 可以是任意内容 -C 选项是秘钥的一个注解 也可以是任意内容
- 一个是个人使用的代码仓库
ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxx@<personal_domain>.com -C "xxx@<personal_domain>.com"
3. 添加信任列表
- 添加信任列表
ssh-add <path_to_private_key_file>
-
error 可能发生
Could not open a connection to your authentication agent. -
可以先使用此命令
ssh-agent bash
- 再次使用上述添加信任列表命令
ssh-add ~/.ssh/id_rsa_<suffix>
//返回这个就表示添加成功了
Identitiy added: ~/.ssh/id_rsa_<suffix>
4. 添加公钥到git账户中
pbcopy < ~/.ssh/id_rsa.pub
5. zai config 文件配置多个ssh-key
- 使用终端
cd ~/.ssh
# 查询是否有config 文件
#如果没有就创建一个
vim config
# 分别配置 ssh-key
#user1
Host user1
Hostname github.com
IdentityFile ~/.ssh/id_rsa_user1
User user1
#私有的gitlab 服务器
#user2
Host user2
Hostname 公网域名
IdentityFile ~/.ssh/id_rsa_user2
User user2
#私有的gitlab 服务器 但没有绑定公网域名
#user3
Host user3
Hostname 公网IP
IdentityFile ~/.ssh/id_rsa_user3
User user3
| key | desc | rule |
|---|---|---|
| Host | 主机 | 随意写 |
| HostName | 主机名 | 公有域名 公有IP |
| IdentityFile | key 文件 | key 路径 |
| User | 用户 | 可随意写,建议使用Host的前面部分,后面具体clone操作都会用到这个user |
6. 测试连接
- 如果已经配置了config
ssh -T git@<user>.<git-server-address>
#举例说明
ssh -T git@Tim.github.com
有一种特殊情况,存在部分小伙伴使用的是云服务器,然后做了一层内外网的隔离。 对外暴露ssh端口并不是默认的22 而是其他(比方说4022)。这个时候上述的连接测试就会失效,正确的做法是
# ssh -T git@<公网IP/公网域名> -p <对外暴露的端口号>
ssh -T git@172.12.123.12 -p 4022
7.clone and push
正常来说按照网上的指引操作,不会有太大的问题
但是如果是自己部署的gitlab 服务,且做了一层端口映射的话 类似上述情况,对外暴露的ssh 端口并不是默认22而是其他。 那么就会有坑
就需要使用这样的格式
git clone ssh://git@hostname:port/...xxx.git
感谢大家,有什么问题,可以留言告诉我