背景
当有多个git账号时,比如:
a. 一个gitlab,用于公司内部的工作开发;
b. 一个gitee,用于自己私有的一些开发活动;
c. 一个github,用于自己公开的一些开发活动;
解决方法
- 生成一个公司用的SSH-Key
ssh-keygen -t rsa -C 'anchoriter@haha.com' -f ~/.ssh/haha_id_rsa
然后不输入任何内容,一直回车,最后会提示The key's randomart image is:
- 同样的步骤生成一个自己私有用的SSH-Key
ssh-keygen -t rsa -C 'anchoriter@gittee.com' -f ~/.ssh/gitee_id_rsa
- 再生成一个github用的SSH-Key
ssh-keygen -t rsa -C 'anchoriter@qq.com' -f ~/.ssh/github_id_rsa
-
在 ~/.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 git@git.haha.com // 公司的仓库地址前缀
ssh -T git@gitee.com
ssh -T git@github.com
会输出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
