使用多个邮箱,配置多个 SSH KEY,开机自动执行shell绑定私钥( 方便维护多个子公司的多个仓库)

277 阅读2分钟

背景:公司有多个海外子公司,每个子公司有自己的gitlab域名。 需要维护多个子公司的多个仓库(部署在不同的域名下的gitab), A 公司项目、B 公司项目,所以需要配置多个 ssh key, 方便我们快速响应业务需求

注: 下面的 [xxx] 代表变量,请输入自己的 英文名

  1. 生成多个 ssh key, 并且把 [xxx].pub 的 ssh key 添加到对应的组织里面。(AAA, BBB 代表不同的公司名字)
// 生成 osl 的 ssh key
ssh-keygen -t rsa -C "[xxx]@gmail.com" -f "AAA"  # AAA 公司的邮箱

// 生成 bgx 的 ssh key
ssh-keygen -t rsa -C "[xxx]@gmail.com" -f "BBB"  # BBB 公司的邮箱
  1. 此时在 ~/.ssh/ 目录就有4个文件,分别对应的是 AAA、BBB、AAA.pub、BBB.pub。 相当于一个邮箱产生一个密钥

  2. ~/.ssh/ 新建一个 config 文件, 执行 命令 touch config, 生成 config 文件,编辑此文件

  3. 在 config 文件插入下面代码 (AAA.com、BBB.com 代表AAA公司、BBB公司 的 gitlab 域名)

Host AAA.com  # AAA 公司的 gitlab 域名
  Preferredauthentications publickey
  IdentityFile ~/.ssh/AAA # 这里的 AAA 对应上面生成的4个文件中的 AAA
  User [xxx]@AAA.com      # AAA 公司域名的gitlab

Host BBB.com   # BBB 公司的 gitlab 域名
  Preferredauthentications publickey
  IdentityFile ~/.ssh/BBB # 这里的 BBB 对应上面生成的4个文件中的 BBB
  User [xxx]@BBB.com      # BBB 公司域名的gitlab
  1. 需要加载一下当前的 配置,否则执行报错
//查看当前rsa list
ssh-add -l

//如果列表中没有新增的rsa, 添加identifile
// 再去操作就没有问题了
ssh-add ~/.ssh/AAA
ssh-add ~/.ssh/BBB
  1. 在次查看输入 ssh-add -l, 出现下面的图就代表可以了(已经添加了 2个 ssh key 针对2个项目)

image.png

  1. ssh-add 添加的是一次性回话的 ssh 密钥,当电脑重启之后,需要在次执行 ssh-add ,这样比较麻烦 (我们编写 shell 来自动完成上述 命令, 如果不执行 后续步骤, 每次电脑重启都需要重新执行 ssh-add xxx, 后面的 shell 是开机自动帮我们执行脚本)

  2. 在桌面新建一个 autorun.sh (开机自动执行 shell 把 密钥加进去), 内容填充如下:

# ssh-add 是临时的,每次重启需要重新执行, 所以放到 shell 里面,每次重启自动执行
ssh-add ~/.ssh/AAA
ssh-add ~/.ssh/BBB
  1. 给 autorun.sh 添加权限, 执行命令 (r+w+x -> 4+2+1 -> 7)
sudo chmod 777 autorun.sh
  1. 点击显示简介, 选择打开方式 终端 (也顺便看看 mac用户组 的读写权限), 记得要选打开方式终端

image.png

image.png

  1. 找到 mac 设置里面的 登录项,点击 +, 把桌面的 shell 添加进来,即可开机自动运行了。 这样就不用每次都执行 ssh -add

image.png