Composer install 报 Permission denied (publickey) 主因是 SSH 密钥未配置或 Git 协议被全局重写为 HTTPS;需验证 ssh -T [email protected]、检查 git config –get-all url.”https://”.insteadOf、或改用 GitHub Token + HTTPS,并确保 minimum-stability 适配 dev 分支。
Composer install 时提示 Cloning into 'xxx'... Permission denied (publickey)
这是最常见现象:Composer 尝试用 SSH 协议拉取私有仓库,但本地 SSH 密钥未配置或未被 GitHub 认可。Composer 默认对 [email protected]:user/repo 这类 URL 使用 SSH,而非 HTTPS。
验证方式:运行 ssh -T [email protected]。若返回 Hi username! You've successfully authenticated...,说明 SSH 已通;否则需补全密钥配置。
- 确保已生成 SSH 密钥(如未生成:
ssh-keygen -t ed25519 -C "[email protected]") - 将公钥(
~/.ssh/id_ed25519.pub)完整复制,粘贴进 GitHub → Settings → SSH and GPG keys - 确认
~/.ssh/config中有对应 Host 配置(尤其多账号场景):Host github.com IdentityFile ~/.ssh/id_ed25519
composer.json 中写死 [email protected]:user/repo.git 仍失败?检查 Git 全局协议重写
即使 Composer 的 repositories 指定了 SSH 地址,Git 自身可能因全局配置强制转为 HTTPS,绕过你的 SSH 设置。
执行 git config --global url."https://".insteadOf git:// 是常见操作,但它也会把 [email protected]: 转成 HTTPS —— 导致权限失效。
- 检查是否误启用了协议替换:
git config --get-all url."https://".insteadOf - 若输出含
[email protected]或ssh://[email protected],运行:git config --global --unset-all url."https://".insteadOf - 也可精准禁用 SSH 转换:
git config --global --add url."[email protected]:".insteadOf "https://github.com/"(反向兜底)
不想配 SSH?改用 GitHub Personal Access Token + HTTPS
SSH 不是唯一解。GitHub 已弃用密码认证,但支持用 Token 替代密码走 HTTPS。这对 CI/CD 或容器环境更可控。