GitHub 多账号共存配置

186 阅读3分钟

之前碰到过

服务器获取 GitHub 代码权限失败

密钥文件重复添加问题

当时多账号仓库操作权限也有问题

应急了一下

仅使用其中一个账号处理

如今又碰到了

于是便有了最终的解决办法

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.

简单说 权限不够

已确认的几点:

  1. 公钥、密钥配对且添加成功
  2. 仓库的用户名及邮件匹配

解决方法: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 不能重名(后面会用到)

IdentityFileGitHub 配对的密钥文件、不能重复

验证配置信息是否正确

@ 后面是上面配置的 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 进行源码管理

存在多账号时

也可参照上述处理方式

要点总结

  1. 编辑 .ssh/config 文件
  2. 添加多个 GitHub 账号信息(注意唯一)
  3. ssh -T git@Host 验证配置信息是否正确
  4. 通过 git remote -v 查看仓库远程主机地址是否正确
  5. git pullgit push 验证最终结果是否正确

感谢

本文首发于网站 「README」

预发于公众号「cnjs」,欢迎关注。