macos公司网络下github认证失败主因是代理劫持https流量致证书验证失败或keychain凭据失效;应临时禁用git代理、配置sslbackend为secure-transport、清理并更新钥匙串中github.com条目,或改用ssh协议规避问题。
macos 连接公司网络后出现 github 认证失败,大概率是公司代理拦截或重写了 https 流量,导致 git 无法验证 github 的 ssl 证书,或凭据被密钥链拒绝访问。这不是 github 本身的问题,而是本地网络环境与认证机制的冲突。重点在于让 git 绕过代理干扰、正确使用系统证书,同时确保凭证不卡在失效的 keychain 条目里。
检查并临时绕过公司代理
公司网络常强制启用 HTTP/HTTPS 代理(尤其通过 PAC 文件或系统设置),而 Git 默认会继承这些设置,造成连接异常。
- 查看当前 Git 是否配置了代理:
git config --global http.proxy和git config --global https.proxy;若输出非空,说明代理已启用 - 临时禁用 Git 代理(仅对当前操作生效):
git config --unset http.proxy && git config --unset https.proxy - 如需全局临时关闭(不影响系统其他应用),也可在终端中执行:
unset HTTP_PROXY HTTPS_PROXY - 注意:不要直接修改系统网络设置里的代理开关——很多企业策略会自动恢复,应优先从 Git 层面控制
强制 Git 使用 macOS 系统证书库
公司代理常替换 SSL 证书(中间人模式),Git 若坚持用自带证书库(如 OpenSSL)就会报 SSL certificate problem;改用系统证书库可复用钥匙串中已信任的企业根证书。
- 运行命令配置:
git config --global http.sslBackend secure-transport - 确保系统证书库最新:打开「终端」,执行
xcode-select --install(安装命令行工具),再运行sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /etc/ssl/cert.pem(若提示文件不存在,先用brew install ca-certificates补全) - 验证是否生效:执行
git ls-remote https://github.com/octocat/Hello-World.git,成功返回即表示证书通路正常
清理并重置钥匙串中的 GitHub 凭据
即使你输入了正确的 PAT(个人访问令牌),若钥匙串里残留旧的、被代理污染的 github.com 条目,GitHub Desktop 或命令行 Git 仍会尝试读取它,结果报 The username or passphrase you entered is not correct。
- 打开「钥匙串访问」→ 左侧选「登录」→ 右上角搜索框输入
github.com - 找到类型为「互联网密码」的条目,双击打开 → 勾选「显示密码」→ 输入系统登录密码解锁 → 将「密码」字段清空,或直接替换成你新生成的 PAT
- 更彻底的做法:右键该条目 → 「删除」,然后重新执行一次
git push或在 GitHub Desktop 中登出再登录,触发新凭据写入 - 确认新条目已写入:再次搜索
github.com,双击新条目,密码区应显示完整的 40 位 PAT 字符串
备用方案:改用 SSH 协议(推荐长期使用)
HTTPS + 代理容易反复踩坑,SSH 则天然绕过 HTTP 代理干扰(走 TCP 22 端口),只要公司防火墙放行该端口即可,且无需每次输 token。
- 生成新 SSH 密钥(避免复用旧密钥):
ssh-keygen -t ed25519 -C "your_work_email@company.com" - 将公钥内容(
cat ~/.ssh/id_ed25519.pub)添加到 GitHub → Settings → SSH and GPG keys - 把远程仓库地址切换为 SSH:
git remote set-url origin git@github.com:username/repo.git - 测试连接:
ssh -T git@github.com,看到Hi username! You've successfully authenticated即成功











