之前碰到过
当时多账号仓库操作权限也有问题
应急了一下
仅使用其中一个账号处理
如今又碰到了
于是便有了最终的解决办法
GitHub 上注册了两个账号
一个用于开源项目
一个用于备份
两个账号的用户名、注册邮件不相同
开始使用一个账号
因为唯一,没啥大问题
现有两个账号
而且经常对不同账号下 Git 仓库操作
使用备份账号进行 git push 提交代码时
出现了如下的报错:
ERROR: Permission to 19357/awesome-mp-collections.git denied to
username. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
简单说 权限不够
已确认的几点:
- 公钥、密钥配对且添加成功
- 仓库的用户名及邮件匹配
解决方法:macOS 系统 为例
打开 ssh 命令行终端
找到 ~/.ssh/config 文件
没有、新建
添加两个账号 GitHub 配置信息
# 开源项目 github
Host github.com
User 你的用户名
HostName github.com
IdentityFile ~/.ssh/github.com
# 备份 github
Host github-19357.com
User 你的用户名
HostName github.com
IdentityFile ~/.ssh/19357
注意 Host 不能重名(后面会用到)
IdentityFile 是 GitHub 配对的密钥文件、不能重复
验证配置信息是否正确
@ 后面是上面配置的 Host 主机名
ssh -T git@github.com
与
ssh -T git@github-19357.com
ssh -vT 可查看更详细的信息,比如配置文件的位置、行号等
出现如下提示,表明信息配置正确
Hi
username! You've successfully authenticated, but GitHub does not provide shell access.
因为是备份账号仓库出现了问题
打开对应的项目文件夹
查看远程仓库的主机地址
git remote -v
出现如下信息
origin git@github.com:username/xxx.git (fetch)
origin git@github.com:username/xxx.git (push)
其中 github.com 匹配上面配置信息中对应的 Host
因为操作的是备份账号仓库
Host 应为 github-19357.com
github.com 显然是错误的
这也解释了上述的
Permission to 19357/awesome-mp-collections.git denied to ... 报错原因
重置远程仓库主机地址为 github-19357.com
git remote set-url origin git@github-19357.com:19357/awesome-mp-collections.git
注意 github-19357.com 后跟用户名
用户名、邮箱如下命令查看
git config user.name // 用户名
git config uesr.email // 邮箱
比如这里的 19357
git push 重新提交代码,一切正常
Windows 也是类似的操作
在 USERPROFILE/.ssh/ 下找到对应的配置文件处理即可
大部分公司内网部署 GitLab 进行源码管理
存在多账号时
也可参照上述处理方式
要点总结
- 编辑
.ssh/config文件 - 添加多个
GitHub账号信息(注意唯一) ssh -T git@Host验证配置信息是否正确- 通过
git remote -v查看仓库远程主机地址是否正确 git pull、git push验证最终结果是否正确
感谢
本文首发于网站 「README」
预发于公众号「cnjs」,欢迎关注。