git 不同的邮箱配置不同的ssh

git 不同的邮箱配置不同的ssh

背景:

1.提交代码到公司gerrit,需要使用公司邮箱[email protected] 生成的SSH。
2.提交代码到github,想使用个人邮箱[email protected] 生成的SSH。

环境:Mac系统

配置ssh keys

如果之前已经配置过其中一个,现在只需新配置另一个即可。

ssh-keygen -t rsa -f ~/.ssh/id_rsa[.别名] -C “邮箱地址“

示例:
ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C “[email protected]

如果都没配置过,再创建执行另一个,别名和邮箱:

ssh-keygen -t rsa -f ~/.ssh/id_rsa.gerrit -C “[email protected]

这样如果进入 .ssh 目录会看到有两套配置文件id_rsa.githubid_rsa.github.pubid_rsa.gerritid_rsa.gerrit.pub

配置config

配置完ssh keys之后需要绑定一下对应关系,这个操作是在~/.ssh/config 目录下进行的。
如果是第一次配置本地应该没有这个文件,可以如下创建。

cd .ssh
touch config

之后进行编辑即可,可以直接操作文本或者vim config进行编辑,
示例:

# gerrit
Host gerrit.company.com
HostName gerrit.company.com
Port 25638
User aaa
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa.gerrit

# GitHub
Host github.com
HostName github.com
User bbb
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

一般ssh config 只配置上面简单的几项即可。
如果想详细了解还有哪些参数参考详细config参数 ,
可以做更多事情,比如ssh 在客户端如何强制使用密码验证方式登陆?。

之后将配置好的SSH key 添加到github 及公司的gerrit 即可。
在这个过程中你可能会使用到这些命令

显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写):
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

终端查看ssk pub 
cat ~/.ssh/id_rsa.pub
将ssh key拷贝到剪切板: 
pbcopy < ~/.ssh/id_rsa.pub
验证

最后验证一下是否配置好了:

验证github  
ssh -T [email protected]
localhost:.ssh whqfor$ ssh -T [email protected]
Enter passphrase for key '/Users/aaa/.ssh/id_rsa.github': 
Hi aaa! You've successfully authenticated, but GitHub does not provide shell access.

这就说明验证通过了

验证github  
ssh -T gerrit.company.com
localhost:.ssh whqfor$ ssh -T gerrit.bbb.com
Enter passphrase for key '/Users/whqfor/.ssh/id_rsa.gerrit': 
 **** Welcome to Gerrit Code Review ****
 Hi bbb, you have successfully connected over SSH.
 Unfortunately, interactive shells are disabled.
 To clone a hosted Git repository, use:
 git clone ssh://bbb.company.com:25638/REPOSITORY_NAME.git

可以看下两个 验证方式有点小差别:ssh -T [email protected]ssh -T gerrit.compant.com,没有找到说明,如果你知道,还请指导我,谢谢。

可能还会遇到问题

多SSH.png

我第一次配置多SSH的时候的确遇到这个问题,
解决方式好像是需要再配置一下邮箱,记不太清了,这个没有场景再次尝试没有复现,有遇到的话欢迎找我交流。

而配置邮箱你可能会需要

配置用户名
git config --global user.name "XXX" 

配置邮箱
git config --global user.email "[email protected]"

取消用户名
git config --unset --global user.name

列出已配置的config列表
git config --list

更多config配置参考git-config

参考

Multiple GitHub Accounts & SSH Config
git 用不同的邮箱配置不同的ssh
Git配置多个SSH key
Mac OS 配置多个ssh-key
git push 问题:committer 'xxx (x)' does not match your user account

你可能感兴趣的:(git 不同的邮箱配置不同的ssh)