终端能push而PhpStorm报Permission denied,根本原因是PhpStorm不继承shell环境变量和ssh-agent状态:Built-in SSH模式不读~/.ssh/config,Native模式需确保ssh-agent已加载密钥;HTTPS凭据缓存过期或Git路径指向老旧版本也会导致该问题。

PhpStorm 里 git push 报 Permission denied (publickey) 或 Permission to xxx.git denied to yyy,根本不是“没配 Git”,而是凭据或密钥没被 PhpStorm 正确识别或使用。终端能推、PhpStorm 推不了,基本锁定在凭据缓存、SSH 配置、Git 二进制路径三者之一。
为什么终端能 push,PhpStorm 却 Permission denied?
因为 PhpStorm 默认不复用系统 shell 的环境变量和 SSH agent 状态,它要么走自己内置的 SSH 实现(Built-in),要么调用你系统里的 ssh 命令(Native)。但 Built-in 模式不读取 ~/.ssh/config,也不继承 ssh-agent 的已加载密钥;而 Native 模式如果没正确启动 agent 或 key 没添加进去,照样失败。
- Windows 下常见:Git Bash 能用
ssh-add -l看到 key,但 PhpStorm 启动时没触发 agent,或用了错误的ssh.exe路径 - macOS 下常见:Keychain 自动刷新了 GitHub token,但 PhpStorm 还拿着旧的 HTTPS 凭据去连
https://地址 - 所有平台都可能:远程 URL 是
https://,但你误以为配了 SSH 就万事大吉——HTTPS 和 SSH 的鉴权完全不互通
检查并切换 SSH executable 为 Native
这是 Windows/macOS 上最常被忽略的一步。PhpStorm 的 Built-in SSH 实现有兼容性问题,尤其对自定义端口、ProxyCommand、多密钥场景支持差。
- 进入 Settings → Version Control → Git
- 找到
SSH executable选项,从Built-in改为Native - 确认你系统 PATH 中的
ssh可用:which ssh(macOS/Linux)或where ssh(Windows CMD) - Windows 用户注意:不要选 Git 安装目录下的
usr/bin/ssh.exe(旧版 mingw),优先用 OpenSSH(Win10 1809+ 自带)或 Git for Windows 自带的usr/bin/ssh.exe(新版) - 改完必须重启 PhpStorm,否则不生效
清除旧凭据,强制重新认证
报错含 denied to xxx 且远程是 HTTPS 地址,说明 PhpStorm 正在用缓存的错误账号(比如旧 GitHub 账户、过期 token、甚至公司 LDAP 账号)尝试登录。
在 OpenClaw 中管理 GitHub 仓库、Pull Request、Issue 与工作流。适用于审查 PR、管理 Issue、自动化 GitHub Actions、同步仓库等场景。
立即学习“PHP免费学习笔记(深入)”;
- Windows:打开 Credential Manager → Windows Credentials → Generic Credentials,删掉所有含
github.com、gitlab.com或你仓库域名的条目 - macOS:终端执行
git credential-osxkeychain erase,然后按提示输入host=github.com和protocol=https - Linux:运行
git config --global --unset credential.helper,再临时设为store(git config --global credential.helper store),下次 push 会明文存密码(仅调试用) - 改完后,在 PhpStorm Terminal 里手动跑一次
git push,让它弹出新登录框;输对账号 + Personal Access Token(不是密码!)
验证 Git 二进制路径是否指向真实 Git
如果 git push 报错连 fatal: unable to access 都没有,只有空白或 “command not found”,大概率是 PhpStorm 根本没找到 Git。
- Settings → Version Control → Git →
Path to Git executable - 别用 Xcode 自带的
/usr/bin/git(macOS)或系统残留的老旧 Git;应指向你实际安装的路径,例如:/usr/local/bin/git(macOS Homebrew)、C:\Program Files\Git\bin\git.exe(Windows) - 点右侧
Test按钮,看是否返回类似Git version 2.4x.x—— 不成功就说明路径错或权限不足 - 顺便检查 Terminal 是否能用
git:如果 Terminal 也报'git' is not recognized,需把 Git 的bin和cmd(Windows)或libexec/git-core(macOS/Linux)加进系统 PATH
真正卡住的地方往往不在“怎么配”,而在“谁在用哪套凭据”。PhpStorm 的 Git 集成是独立进程,它不继承你的 shell 环境,也不自动同步 Keychain / Credential Manager 的变更。每次换账号、换 token、换密钥,都要主动清旧、重试、验证 Test 按钮结果——靠等它自动更新,基本等于等它永远失败。


















