Composer install卡在密码输入是因为未配置GitHub Personal Access Token(PAT),导致访问API时触发每小时60次限流并弹出认证提示;必须配置含repo权限的PAT到auth.json(权限600)或使用SSH方式,换国内镜像仅对公共包有效,无法解决私有仓库认证问题。

为什么 composer install 突然卡在密码输入?
不是你输错了密码,而是 Composer 正在尝试访问 GitHub API 或私有仓库,而没提前配置认证凭据。GitHub 自 2021 年 8 月起彻底停用密码登录,composer install 在查包信息、下载 zip、解析分支时都会触发 API 请求;未认证用户每小时仅限 60 次,超限就弹出 Username: 提示——哪怕你装的是公开包,只要走 API 就可能中招。
auth.json 配置 PAT(Personal Access Token)最稳妥
这是目前最通用、最可控的方案,尤其适合 CI/CD 或多项目复用场景。
- 去 GitHub Settings → Developer settings → Personal access tokens → Tokens (classic) 创建新 token,勾选
repo权限(私有库必需),其他按需选 - 生成后复制 token 字符串(只显示一次,务必保存)
- 在项目根目录或全局
~/.composer/auth.json中写入:
{
"github-oauth": {
"github.com": "ghp_abc123...xyz"
}
}
注意:auth.json 文件权限必须是 600(chmod 600 auth.json),否则 Composer 会忽略它。
换国内镜像源能绕过密码提示吗?
能,但只对 Packagist 公共包有效,且依赖镜像稳定性。国内源不走 GitHub API,直接代理下载,自然不触发认证。
- 阿里云源(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - Laravel-China 源(部分包滞后):
composer config -g repo.packagist composer https://packagist.laravel-china.org - 腾讯云源已停服,别再试
⚠️ 警告:换源不能解决私有 Git 仓库(如 git@github.com:xxx/private.git)的认证问题,这类仓库仍需 SSH 或 PAT 配置。
SSH 方式免密更干净,但要注意权限链
如果你用 git@github.com:user/repo.git 这类地址,SSH 是首选,不用暴露 token,也无速率限制。
- 确保本地已生成 SSH 密钥:
ssh-keygen -t ed25519 -C "your@email.com" - 公钥(
~/.ssh/id_ed25519.pub)已添加到 GitHub/GitLab 的 SSH Keys 中 - 测试连通性:
ssh -T git@github.com应返回 Hi xxx! You've successfully authenticated. - 确认
composer.json中仓库 type 是vcs,url 是 SSH 格式,不是 HTTPS
常见坑:CI 环境里没加载 SSH agent,或 ~/.ssh/config 中 Host 别名没配好,导致克隆失败却报错模糊——建议先手动 git clone git@github.com:user/repo.git 验证。
真正麻烦的从来不是输一次密码,而是不同环境(本地、CI、Docker)里认证方式不一致,导致同一命令在 A 机成功、B 机卡死。把 auth.json 放进项目并 gitignore,或统一用 SSH + deploy keys,比临时换源更值得花十分钟理清楚。


















