git的ssh配置多用户

其它
2021年03月12日
901

生成密钥对

密钥对保存的默认位置是 ~/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.pubid_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 —> LocalSystem 即系统级别,Global 为配置的全局,Local 为仓库级别,优先级是 Local > Global > System

因为我们并没有给仓库配置用户名,因此此时你提交的话,就会使用 System 级别的用户名,也就是你的系统主机名了。

因此我们需要为每个仓库单独配置用户名信息,假设我们要配置 github 的某个仓库,进入该仓库后,执行:

shell
git config --local user.name "xxx" git config --local user.email "xxxx.xxx"

完。