Git配置多个SSH-Key

背景

当有多个git账号时,比如:

a. 一个gitlab,用于公司内部的工作开发;
b. 一个gitee,用于自己私有的一些开发活动;
c. 一个github,用于自己公开的一些开发活动;

解决方法

  1. 生成一个公司用的SSH-Key
ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/haha_id_rsa

然后不输入任何内容,一直回车,最后会提示The key's randomart image is:

  1. 同样的步骤生成一个自己私有用的SSH-Key
ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/gitee_id_rsa
  1. 再生成一个github用的SSH-Key
ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/github_id_rsa
  1. 在 ~/.ssh 目录下新建一个文本文件,并命名为config,添加如下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径)


# haha
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/haha_id_rsa
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

4.分别查看你的 public key(以ssh-rsa 开头,以账号的注册邮箱结尾的)

cat ~/.ssh/haha_id_rsa.pub
cat ~/.ssh/gitee_id_rsa.pub
cat ~/.ssh/github_id_rsa.pub

5.将public key分别添加到公司代码库、码云或者github等仓库的公钥管理后台
例如:码云SSH公钥管理后台

6.用ssh命令分别测试

ssh -T [email protected]  // 公司的仓库地址前缀
ssh -T [email protected]
ssh -T [email protected]

会输出Hi xxx! You've successfully authenticate... 表示配置成功

7.将密钥保存到钥匙串,避免重启电脑后丢失
之前使用下面的方法是没有问题的,但是macOS Monterey 12.0.1新系统出现了警告,没有成功
旧方法:

ssh-add -K ~/.ssh/haha_id_rsa
ssh-add -K ~/.ssh/github_id_rsa
ssh-add -K ~/.ssh/gitee_id_rsa

警告内容如下:

WARNING: The -K and -A flags are deprecated and have been replaced
         by the --apple-use-keychain and --apple-load-keychain
         flags, respectively.  To suppress this warning, set the
         environment variable APPLE_SSH_ADD_BEHAVIOR as described in
         the ssh-add(1) manual page.

新方法:

ssh-add --apple-use-keychain ~/.ssh/haha_id_rsa
ssh-add --apple-use-keychain ~/.ssh/github_id_rsa
ssh-add --apple-use-keychain ~/.ssh/gitee_id_rsa

接下来就可以直接使用SSH的URL免密码管理代码仓库了

换了苹果芯片的新电脑后(M1Pro系统版本macOS Monterey),每次重启电脑后使用git都提示密钥错误,但是在cat密钥后又能恢复正常cat ~/.ssh/haha_id_rsa.pub,不明白原因,如果你知道原因或有处理方式,烦请告知。
最后我的处理方式是自己制作一个自动化脚本工具,电脑启动后会自动执行这个脚本,以达到手动触发cat命令的效果。
具体步骤可查看下面的文章:
https://www.jianshu.com/p/df6e0ca58b78

你可能感兴趣的:(Git配置多个SSH-Key)