github多用户提交错误Permission to repo denied to
背景:同一台电脑的public key同时添加到了github的两个账户,导致user1的仓库没法正常提交。
解决办法:为两个账户分别配置ssh key,配置~/.ssh/config文件(windows下也是这个路径,在git bash中可以识别~)
错误:
$ git push remote: Permission to user1/python.git denied to user2. fatal: unable to access 'https://github.com/user1/python.git/': The requested URL returned error: 403
环境:windows 7+ git bash
1、在github上删除两个账户的ssh key
2、生成两个ssh key
切换到ssh key的目录
$ cd ~/.ssh/
只需要修改文件名为user1_rsa, passphrase留空回车即可。
$ ssh-keygen -t rsa -C "user1" Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/waston/.ssh/id_rsa): user1_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in user1_rsa. Your public key has been saved in user1_rsa.pub. The key fingerprint is: SHA256:BJ5FGpGBCwM+Vw9769IACYHKoWD8gJURyYuSNOJQjUY user1 The key's randomart image is: +---[RSA 2048]----+ |=OEB +==o | |BBX =.=* | |@*=B o+o. | |*o+.o ... | |. . .S | | + | | . o | | . | | | +----[SHA256]-----+
同样方式生成user2_rsa
3、把user1_rsa_pub的内容上传到github后台, user2同样操作
https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/
4、修改~/.ssh/config文件内容为:
#Default GitHub Host github.com HostName github.com User git IdentityFile ~/.ssh/user1_rsa IdentitiesOnly yes Host github2 HostName github.com User git IdentityFile ~/.ssh/user2_rsa IdentitiesOnly yes
5、添加你的ssh密钥到ssh-agent中
$ eval "$(ssh-agent -s)"
Agent pid 40672
$ ssh-add ~/.ssh/user1_rsa
Identity added: /c/Users/waston/.ssh/user1_rsa (/c/Users/waston/.ssh/user1_rsa)
$ ssh-add ~/.ssh/user2_rsa
Identity added: /c/Users/waston/.ssh/user2_rsa (/c/Users/waston/.ssh/user2_rsa)
6、测试
user1仓库测试:
cat@cat-pc MINGW64 /f/github/python (master) $ ssh -T github.com Hi user1! You've successfully authenticated, but GitHub does not provide shell access. cat@cat-pc MINGW64 /f/github/python (master) $ git push Everything up-to-date
$ ssh -T github2 Hi user2! You've successfully authenticated, but GitHub does not provide shell access. cat@cat-pc MINGW64 /h/z8 (master) $ git remote -v origin git@github.com:user2/z.git (fetch) origin git@github.com:user2/z.git (push) cat@cat-pc MINGW64 /h/z8 (master) $ git remote set-url origin git@github2:user2/z.git cat@cat-pc MINGW64 /h/z8 (master) $ git push Everything up-to-date
#提示文件不存在,检查下rsa文件名或者重新生成key
$ ssh -T github2
no such identity: /c/Users/waston/.ssh/user2_rsa: No such file or directory
Permission denied (publickey).
参考:
Git 最著名报错 “ERROR: Permission to XXX.git denied ... - 简书
Quick Tip: How to Work with GitHub and Multiple Accounts
git - Using Multiple SSH Public Keys - Super User
Error: Permission to user/repo denied to user/other-repo - User Documentation
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)