git push 报“unable to access”错误需分场景排查:dns解析失败、ssl证书问题、ssh端口屏蔽、认证失败或url错误。优先检查网络连通性、hosts配置、代理设置、证书信任、ssh端口可用性、pat令牌及远程url准确性。

Git push 报 unable to access 'https://...': Could not resolve host
这是 DNS 解析失败,不是权限或网络连通性问题。本地根本没发出去请求,git 连远程域名都查不到 IP。
常见于公司内网、代理环境、或 hosts 被误改。先确认是否能通外网:ping github.com 或 curl -I https://github.com。如果这两个都失败,问题不在 Git,而在系统网络配置。
- 检查
/etc/hosts(macOS/Linux)或C:\Windows\System32\drivers\etc\hosts(Windows),删掉把github.com指向错误 IP 的行 - 临时绕过 DNS:用 IP 直接替换 URL,比如把
https://github.com/user/repo.git改成https://140.82.121.4/user/repo.git(注意:IP 可能变动,仅临时验证用) - 若走代理,确保
git config --global http.proxy设置正确;不需要代理时,用git config --unset http.proxy清掉
Git clone/push 报 unable to access 'https://...': SSL certificate problem
证书校验失败,多见于企业防火墙中间人代理、老旧系统 OpenSSL 版本低,或自建 Git 服务用了私有 CA 证书。
别急着关 SSL 验证(git config --global http.sslVerify false),这会暴露凭证——尤其用账号密码认证时,明文密码可能被截获。
- 优先更新系统证书包:macOS 用
brew install ca-certificates+git config --global http.sslCAInfo /usr/local/etc/ca-certificates/cert.pem;Ubuntu/Debian 执行sudo apt update && sudo apt install ca-certificates - 若用公司代理,导出其根证书为 PEM 文件,再通过
git config --global http.sslCAInfo /path/to/company-ca.pem指定 - HTTPS URL 中含特殊字符(如 @、/)未编码?检查 remote URL 是否被手动改错,用
git remote get-url origin看真实值
SSH 方式报 unable to access 'git@github.com:user/repo.git': Failed to connect to github.com port 22
端口 22 被屏蔽了,不是密钥问题。GitHub 支持 SSH,但很多企业出口防火墙只放行 443,或者你本地网络策略禁了 22。
验证方式:运行 ssh -T -p 22 git@github.com,超时即说明 22 不通;再试 ssh -T -p 443 git@ssh.github.com,若成功,就该切到 GitHub 的 SSH over HTTPS 端口。
- 把 remote 改成 GitHub 官方兼容地址:
git remote set-url origin git@ssh.github.com:user/repo.git - 在
~/.ssh/config里加一段,让所有对github.com的 SSH 请求自动走 443:Host github.com Hostname ssh.github.com Port 443 User git
- 改完后用
ssh -T github.com测试(不用写端口,config 已接管)
Git 认证失败导致的 unable to access(HTTP/HTTPS 场景)
看起来是“无法访问”,实际是 403 或 401 响应被 Git 统一包装成这个模糊错误。特别是 GitHub 自 2021 年 8 月起停用密码认证后,很多人还在用账号密码 push,就会卡在这儿。
关键看完整错误里有没有 Authentication failed 或 403 Forbidden 字样(有时藏在 verbose 日志里)。用 git -c http.extraHeader="Authorization: Basic xxx" ls-remote origin 手动测更准。
- HTTPS 协议必须用 Personal Access Token(PAT)替代密码:生成时勾选
repo和workflow权限,然后用git remote set-url origin https://<token>@github.com/user/repo.git</token> - Token 别硬编码在 URL 里——容易泄露。推荐用
git credential store或git credential-manager(Windows/macOS)缓存 - 检查 Git 凭据管理器是否存了旧密码:macOS 在“钥匙串访问”里搜
github.com,Windows 在“凭据管理器→Windows 凭据”里删旧条目
最常被忽略的是:错误信息里那个 URL 是不是你真正想访问的地址?复制粘贴时多一个空格、少一个 .git、协议写成 http 而非 https,都会触发这个报错。先 git remote -v 看一眼,比瞎试快得多。











