背景
当有多个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
然后不输入任何内容,一直回车,最后会提示The key's randomart image is:
- 生成一个github用的SSH-Key
ssh-keygen -t rsa -C 'anchoriter@qq.com' -f ~/.ssh/github_id_rsa
然后不输入任何内容,一直回车,最后会提示The key's randomart image is:
- 在 ~/.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免密码管理代码仓库了
网友评论