Git权限异常:可SSH克隆仓库但无法执行push操作
解决Git Push时SSH公钥权限拒绝问题
1. 确认远程仓库URL配置
检查本地仓库的.git/config文件,确保远程仓库的URL使用了你配置的github-work主机名,而非默认的github.com:
[remote "origin"] url = git@github-work:<用户名>/<仓库名>.git fetch = +refs/heads/*:refs/remotes/origin/*
如果此处仍是git@github.com:...,push操作会走默认SSH密钥而非你配置的work密钥,直接导致权限错误。
2. 修正SSH配置中的密钥路径
你的~/.ssh/config里IdentityFile work是相对路径,SSH会从当前执行目录寻找密钥,而非~/.ssh目录,需改为绝对路径:
Host github-work Hostname github.com IdentityFile ~/.ssh/work
3. 确保密钥文件权限合规
SSH对密钥文件权限要求严格,必须设置为仅当前用户可读:
chmod 600 ~/.ssh/work chmod 644 ~/.ssh/work.pub
权限不符合要求会导致SSH自动忽略该密钥,转而使用默认密钥(如id_rsa),触发权限拒绝。
4. 测试SSH连接有效性
执行以下命令测试github-work的SSH认证是否正常:
ssh -T git@github-work
若返回Hi <用户名>! You've successfully authenticated, but GitHub does not provide shell access.,说明认证成功,此时再执行git push即可正常工作。
5. 排查Git远程配置优先级
若以上步骤都无效,检查是否有全局Git配置覆盖了本地配置:
git config --global --get remote.origin.url
如果输出存在且不是git@github-work:...,可删除全局配置:
git config --global --unset remote.origin.url
确保本地仓库的配置优先生效。
内容的提问来源于stack exchange,提问作者user5405648
相关产品推荐
相关产品推荐

