git的ssh配置多用户
生成密钥对
密钥对保存的默认位置是 ~/ssh
目录下。
生成 github 的密钥对,通过 -C
参数输入 github 的邮箱:
shell
ssh-keygen -t rsa -C "email@xxx.com"
按下回车键后,会提示输入密钥对名称(默认为:id_rsa
)
为了便于区分,推荐输入id_rsa_github
。输入完毕后会提示输入密码,留空即可,然后一直回车,密钥对就生成完毕了。
生成 gitee 的密钥对,步骤和上面一样。名称输入 id_rsa_gitee
。
添加 SSH Keys
在 github 和 gitee 中分别把生成的公钥 id_rsa_github.pub
和 id_rsa_gitee.pub
中的内容分别配置上去。
添加私钥
当在 github 和 gitee 中完成公钥的配置之后,我们还需要在本地把私钥给配置上去,不然无法使用。
shell
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitee
添加完毕后,可以通过执行 ssh-add -l
来验证,如果都能显示出来和下面一样,就OK了。
plain-text
3072 SHA256:nhBYYUcP3IHj7H2RbhQRoJ2eIkDD1dqzYvoVwnffOiU xxx@xx.com RSA
3072 SHA256:yV3sxexZYQj13dn+xAuQRQUahyAQwyrDHu3NkTsGhH4 xxx@xx.com RSA
注意:如报错误 Could not open a connection to your authentication agent.
,则先执行一下以下命令:
shell
ssh-agent bash
之后再重新执行 ssh-add
命令。
管理密钥
在完上以上步骤后,我们还需要在本地创建一个密钥配置文件,通过该文件,实现根据仓库的 remote
链接地址自动选择合适的密钥。
shell
vim ~/.ssh/config
配置内容如下:
shell
# github 配置
Host github.com
HostName github.com
User humandetail
IdentityFile ~/.ssh/id_rsa_github
# gitee 配置
Host gitee.com
HostName gitee.com
User humandetail
IdentityFile ~/.ssh/id_rsa_gitee
该文件分为多个用户配置,每个用户配置包含以下几个配置项
- Host:仓库别名,建议使用域名
- HostName:仓库的域名
- User:仓库网站上的用户名
- IdentityFile:密钥的绝对路径
配置完毕后,可以使用 ssh -T
命令来检测配置是否可用:
shell
ssh -T git@github.com
ssh -T git@gitee.com
仓库配置
恭喜你!完成以上配置后,其实你已经基本完成了所有配置。分别进入附属于 github 和 gitee 的仓库,此时都可以进行 git 操作了。但是别急,如果你此时提交仓库修改后,你会发现提交的用户名变成了你的系统主机名。
这是因为 git 的配置分为三级别,System
—> Global
—> Local
。System
即系统级别,Global
为配置的全局,Local
为仓库级别,优先级是 Local
> Global
> System
。
因为我们并没有给仓库配置用户名,因此此时你提交的话,就会使用 System
级别的用户名,也就是你的系统主机名了。
因此我们需要为每个仓库单独配置用户名信息,假设我们要配置 github 的某个仓库,进入该仓库后,执行:
shell
git config --local user.name "xxx"
git config --local user.email "xxxx.xxx"
完。