Git配置多个SSH-Key

背景

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

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

解决方法

  1. 生成一个公司用的SSH-Key
ssh-keygen -t rsa -C 'anchoriter@haha.com' -f ~/.ssh/haha_id_rsa

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

  1. 同样的步骤生成一个自己私有用的SSH-Key
ssh-keygen -t rsa -C 'anchoriter@gittee.com' -f ~/.ssh/gitee_id_rsa
  1. 再生成一个github用的SSH-Key
ssh-keygen -t rsa -C 'anchoriter@qq.com' -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 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容