在Ubuntu20上布置了多个git账号,在进行克隆时候一直如下图所示:

之前只配置一个git账户的时候,大部分人都会按照教程配置了全局用户名和邮箱,这里首先应该移除之前的设置(可参考https://blog.csdn.net/q13554515812/article/details/83506172)
检查是否已经进行过全局设置,打开终端,输入
git config --global user.name
git config --global user.email
如果之前配置过,输完一行敲回车相应下面就会显示,如果没配置过就什么都没有(如下图)

如果已经配置过,则移除全局设置
git config --global --unset user.name
git config --global --unset user.email
后面账户配置好后,可在相应的文件夹下配置局部账户,配置方法如下
git config --local user.name "username"
git config --local user.email "user@email.com"
打开终端,进入.ssh文件夹
cd ~/.ssh
使用如下命令生成ssh key(在2022年3月15日之后,github不再支持SHA-1的加密方式,推荐使用ecdsa的方式)
ssh-keygen -t ecdsa -b 521 -C "user@email.com"
id_ecdsa_ownls,就会看到在.ssh/文件夹下,出现了两个文件id_ecdsa_own和id_ecdsa_own.pub(前缀是刚刚自定义的名字)cat id_ecdsa_own.pub命令打开公钥,将里面的内容复制下来

将私钥添加到本地,运行以下命令
ssh-add ~/.ssh/id_ecdsa_own
显示成功添加即可,可以通过如下命令检查私钥是否添加成功
ssh-add -l
如果出现添加失败的提示,可执行以下命令
ssh-agent bash
ssh-add ~/.ssh/id_ecdsa_own
关于命令ssh-add的具体用法,可以参考https://www.jianshu.com/p/0c6719f33fb9
配置config文件
~/.ssh下,打开config文件,如果没有该文件可以自己创建一个 vi config
#第一个账户
Host github.com #托管网站的别名,随便写
HostName github.com #托管网站的域名,如果是github就写这个
User aaa #用户名,可自定义有辨识度的名字,后面要用到
IdentityFile ~/.ssh/id_ecdsa_own #密钥的位置
#
#第二个账户
Host github.com
HostName github.com
User bbb #与第一个账户不一样
IdentityFile ~/.ssh/id_ecdsa_own2
测试配置是否成功
ssh -T git@aaa.github.com
ssh -T git@bbb.github.com
Hi XXX! You’ve successfully authenticated, but GitHub does not provide shell access.XXX可以对应上config中所配置的账户配置成功后,可以进行git clone,但需要注意,需要对语句进行如下处理
git clone git@aaa.github.com:User/Repository.git
注意在git@后面要先加上自己在config中配置的用户名,才能正常进行克隆
ssh-add -l命令查看是否所有的私钥都已经添加到本地~/.ssh文件夹下检测配置是成功的,但是在需要git clone的文件夹下检测配置不成功,不能出现相应的账户名称,因此显示如本文一开始所展示图片那样,说没有权限,可以尝试通过重启电脑解决