MacBook双GitHub账号推送报错:user1无user2仓库权限
MacBook双GitHub账号推送权限问题解决方法
你遇到的核心问题是SSH连接时默认使用了个人账号的密钥,和git config里的user.name/email无关(这两个仅控制提交的作者信息)。以下是具体解决步骤:
1. 确认当前SSH关联的账号
执行命令查看当前SSH连接GitHub时用的是哪个账号:
ssh -T git@github.com
如果返回Hi user1! ...,说明确实在使用个人账号的密钥。
2. 为公司账号生成独立SSH密钥
生成专属密钥,避免和个人密钥冲突:
ssh-keygen -t ed25519 -C "user2@company.com"
执行时会提示输入保存路径,比如输入~/.ssh/id_ed25519_user2,不要使用默认的id_ed25519(会覆盖个人密钥)。
生成完成后,把~/.ssh/id_ed25519_user2.pub里的内容复制到公司GitHub账号的SSH密钥设置中。
3. 配置SSH区分双账号
在~/.ssh目录下创建/编辑config文件,添加以下内容:
# 个人账号配置 Host github.com-user1 HostName github.com User git IdentityFile ~/.ssh/id_ed25519 # 你的个人密钥路径 IdentitiesOnly yes AddKeysToAgent yes # 公司账号配置 Host github.com-user2 HostName github.com User git IdentityFile ~/.ssh/id_ed25519_user2 # 公司密钥路径 IdentitiesOnly yes AddKeysToAgent yes
Host是自定义别名,用来区分不同账号的SSH连接IdentitiesOnly yes强制使用指定的密钥,避免自动匹配其他密钥
4. 修改仓库远程地址
把当前仓库的远程地址替换为公司账号的SSH别名格式:
git remote set-url origin git@github.com-user2:user2/repository-name.git
这里把原地址的github.com换成了我们定义的github.com-user2。
5. 验证连接与推送
先验证公司账号的SSH连接:
ssh -T git@github.com-user2
如果返回Hi user2! You've successfully authenticated, but GitHub does not provide shell access.,说明连接正常,此时再执行推送即可。
额外清理步骤
如果之前有缓存的旧密钥,可清空后重新添加:
ssh-add -D # 清空所有缓存的密钥 ssh-add ~/.ssh/id_ed25519 # 添加个人密钥(可选,根据需要) ssh-add ~/.ssh/id_ed25519_user2 # 添加公司密钥
内容的提问来源于stack exchange,提问作者Rachit Anand
相关产品推荐
相关产品推荐

