使用PAT进行GitHub认证遇403权限拒绝,求排查解决方法
先排查HTTPS认证的问题(当前配置)
确认PAT的权限是否正确
登录GitHub,进入Settings -> Developer settings -> Personal access tokens -> Tokens (classic),找到你使用的PAT,确保勾选了repo权限(这是访问私有仓库的核心权限),同时检查PAT是否未过期、未被撤销。检查Mac钥匙串中的GitHub凭证
打开Keychain Access,搜索github.com,找到对应的互联网密码条目,确认存储的密码是最新的PAT。如果存在旧的凭证(比如之前的账户密码),直接删除该条目,重新执行git操作,手动输入用户名(GitHub账号名)和密码(PAT),让钥匙串重新存储正确凭证。验证远程仓库URL的正确性
执行git remote -v查看当前origin的URL,确认格式为https://<你的PAT>@github.com/username/bd0823.git。如果URL未携带PAT或PAT输入有误,重新设置:git remote set-url origin https://<你的PAT>@github.com/username/bd0823.git清除Git的凭证缓存
若Git缓存了旧凭证导致冲突,执行以下命令禁用全局凭证助手,再尝试拉取/推送:git config --global --unset credential.helper执行
git pull时会弹出输入框,输入用户名和PAT,验证成功后可重新启用凭证助手:git config --global credential.helper osxkeychain
关于SSH认证的替代方案(解决之前密钥无效的问题)
如果HTTPS方案无法解决,SSH是更稳定的选择,按以下步骤排查:
重新生成合规的SSH密钥
推荐使用更安全的Ed25519算法生成,执行:ssh-keygen -t ed25519 -C "你的GitHub绑定邮箱"一路回车采用默认设置即可,无需设置密码(除非需要额外安全防护)。
确保SSH密钥的文件权限正确
密钥文件权限必须为600(仅本人可读写),公钥权限为644,执行:chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub将公钥添加到GitHub账户
复制公钥内容:cat ~/.ssh/id_ed25519.pub登录GitHub,进入Settings -> SSH and GPG keys -> New SSH key,粘贴复制的内容,填写标题后点击Add SSH key。
验证SSH连接有效性
执行以下命令测试:ssh -T git@github.com若输出
Hi <你的用户名>! You've successfully authenticated, but GitHub does not provide shell access.则认证成功。若报错,检查ssh-agent是否加载了密钥:eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519之后重新测试连接。
切换远程仓库到SSH URL
认证成功后,更新origin的URL:git remote set-url origin git@github.com:username/bd0823.git之后即可正常执行推送/拉取操作。
内容的提问来源于stack exchange,提问作者Bernadette

