Git 多账号 SSH 配置

时间:2023-02-16 22:07:10

【前言】

在企业工作环境中,我们一般会用企业的github或gitlab等账号,同时也会配置相关的ssh访问方式。

当我们想要同时操作个人github或gitlab仓库时,就无法重复使用现有的ssh公钥配置在个人账号里。

一种解决办法是不使用ssh方式,直接使用https方式访问个人仓库是可行的,但我们今天介绍一种方法可以让我们在同一台电脑中配置两个ssh访问。

【配置SSH】

生成新的RSA密钥对

我们无法在github站点不同账户配置中使用同一个RSA公钥,将已经添加过的公钥再次添加到另一个不同账户时,会提示密钥已经被使用过了,这时候我们需要新创建一个密钥对

打开cmd输入命令:ssh-keygen -t rsa -C "随意注释字符" -f C:/Users/{username}/.ssh/{keyname}一路回车,生成新的密钥对

其中两个参数,username 为个人电脑账户名

Git 多账号 SSH 配置

keyname 自行给新的密钥对起一个名字,例如我输入 7tiny,那么生成出来的密钥对如下:

Git 多账号 SSH 配置

将新公钥添加到将要访问的 github 账户

这一步没啥说的,如果不清楚如何配置,参考历史文章 --> Git SSH 认证配置 - 7tiny - 博客园 (cnblogs.com)

添加本地配置文件

在 .ssh 目录添加配置文件,文件名 config 注意没有文件扩展名

Git 多账号 SSH 配置

文件内容也非常简单,按如下配置即可

Host 7tiny
    HostName github.com
    User git
    IdentityFile ~/.ssh/7tiny

文件说明

Host:标识,随意取一个即可

HostName:仓库站点域名,我使用的是 github,因此域名填 github.com

User:默认git即可

IdentityFile:填刚才生成时的密钥对地址

拉取新账户的仓库源码

我们通过ssh方式直接克隆新仓库的源码

克隆时,可以指定采用新的ssh密钥配置此仓库,将 git@github.com 替换为前面配置的 Host 名称(本文用的是7tiny)

例如:git clone 7tiny:dotnet/corefx.git

当然,不这么指定也是可以成功 clone 的,clone后,打开本地仓库目录下的 .git 文件夹

Git 多账号 SSH 配置

修改 config 配置文件里的 url,将 github.com 换为 Host 名称(本文用的是7tiny),和上述clone时配置效果是一样的

Git 多账号 SSH 配置

【说一点题外话】

经过上述配置,git的正常操作都已经ok了,但是还有点小细节问题。

我们提交代码采用的账号和邮箱用的都是 global 配置里的,这样在提交代码时,个人仓库里的提交记录就会被识别为公司账号的提交,这样首页是不会显示小绿点的,因为不算“自己”的贡献

这个处理办法就是将当前代码仓库的姓名和邮箱换成个人账号的姓名和邮箱

方法一、通过命令行配置

首先进入当前仓库地址打开 git 命令行,通过 git config 命令修改本地姓名邮箱

git config user.name "xxx name"
git config user.email "aaa@bbb.xx.com"

方法二、打开 config 配置文件直接修改

打开本地代码仓库目录下的 .git 文件夹下的 config 配置文件

Git 多账号 SSH 配置

添加 user 节点

[user]
	name = sevenTiny
	email = xxx@qq.com

Git 多账号 SSH 配置

保存即可

用任意一种方式配置好后,可以通过git config --local --list 查看当前仓库配置

通过 git config --global --list 查看全局配置,以确保全局配置没有被改错(local 和 global 不使用同一个姓名邮箱情况下)

后续提交的代码将会用此姓名和邮箱操作仓库,当然,小绿点也是“你”的了