Mac 配置 多组 ssh-key

65 阅读2分钟

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
keydescrule
Host主机随意写
HostName主机名公有域名 公有IP
IdentityFilekey 文件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

image.png

7.clone and push

正常来说按照网上的指引操作,不会有太大的问题

但是如果是自己部署的gitlab 服务,且做了一层端口映射的话 类似上述情况,对外暴露的ssh 端口并不是默认22而是其他。 那么就会有坑

就需要使用这样的格式

git clone ssh://git@hostname:port/...xxx.git

image.png

感谢大家,有什么问题,可以留言告诉我