一、问题描述

同一台电脑上需要操作两个Github仓库,提交代码时出现该错误,原因是没有权限,不能从远程仓库读取。

image-20240607131941772

二、解决方案

方案一(推荐)

1、创建SSH

切换到 C:\Users\your_user_name\.ssh 目录下,使用cmd打开该目录,但习惯上密钥文件存放在此目录,也可以在其他目录打开,生成文件后粘贴过来即可。

使用以下命令生成新的密钥

1
ssh-keygen -t rsa -C "your email"

提示输入要保存的文件,默认为 id_rsa,为了方便区分不同账号,我这里起个别名 shiguang,一路回车即可

image-20240607132704857

我这里按照同样的操作生成了两对SSH密钥,如果想保留原来的密钥,也可以只生成一个

image-20240607133634784

2、GitHub绑定SSH

分别给两个账号绑定新的密钥

Github => 点击头像 => settings => SSH and GPG keys => new SSH key

.pub 后缀的公钥保存到GitHub

img

3、配置Config文件

配置C:\Users\your_user_name\.ssh\config 文件,注意,config文件没有后缀,如果该目录没有此文件就手动创建一个 ,内容如下所示,我只需要操作连个账户,如果有多个可以配置多个

1
2
3
4
5
6
7
8
9
10
11
#shiguang-coding
Host shiguang
HostName github.com
User git
IdentityFile ~/.ssh/shiguang

#xiangyangdev
Host xiangyang
HostName github.com
User git
IdentityFile ~/.ssh/xiangyang

需要修改 Host 以及 IdentityFile 为不同账号对应的别名及私钥文件

4、重置远程地址

使用以下命令查看当前仓库远程地址

1
git remote -v

使用以下命令修改远程仓库地址

1
git remote set-url origin  别名:仓库路径.git

例如,原本的仓库路径为

1
git@github.com:Shiguang-coding/blog_source.git 

或者

1
https://github.com/Shiguang-coding/blog_source.git 

改为:

1
shiguang:Shiguang-coding/blog_source.git 

修改好后使用 git push 重新提交即可

如图所示:

image-20240607134209601

方案二(不推荐)

如果确认之前账户不用了,直接删除ssh文件中的内容,再新建一个ssh即可

使用以下代码配置新账号的用户名和邮箱

1
2
git config user.name "用户名"
git config user.email "邮箱"

参考

解决Permission to xxx denied to xxx问题