配置 SSH 密钥或访问令牌可使 Composer 安全访问私有仓库。1. 使用 SSH:生成密钥对并添加公钥到代码平台,通过 SSH URL(如 git@github.com:username/private-package.git)拉取;2. 使用 Token:在平台生成具有读取权限的 token,在 auth.json 或全局配置中设置认证信息,适用于 HTTPS 方式;3. 推荐将 auth.json 加入 .gitignore 避免泄露,CI/CD 中可通过 COMPOSER_AUTH 环境变量注入凭证。确保认证方式与仓库 URL 类型匹配,并妥善保护密钥安全。

当你在项目中使用 Composer 并需要访问私有仓库(如 GitHub、GitLab 或自建的私有 Packagist 服务)时,Composer 必须通过认证才能拉取代码。常见的认证方式是使用 SSH 密钥或访问令牌(token)。下面介绍如何配置这两种方式来安全地访问私有 Composer 源。
使用 SSH 密钥访问私有仓库
SSH 是最常用的认证方式之一,尤其适用于托管在 GitHub、GitLab 等平台的 Git 仓库。
步骤如下:
- 生成 SSH 密钥对(如果尚未生成):
ssh-keygen -t ed25519 -C "your_email@example.com"
建议保存到默认路径(如 ~/.ssh/id_ed25519),并设置密码保护以增强安全性。 - 将公钥(~/.ssh/id_ed25519.pub)添加到你的代码平台账户中(如 GitHub 的 Settings → SSH and GPG keys)。
- 确保可以通过 SSH 正常克隆仓库:
ssh -T git@github.com(GitHub)或对应平台命令。 - 在 composer.json 中使用 SSH 格式的仓库 URL:
"repositories": [
{
"type": "vcs",
"url": "git@github.com:username/private-package.git"
}
]
Composer 会自动使用系统默认的 SSH 配置进行连接,无需额外配置认证信息。
使用 Token 访问私有仓库
如果你无法使用 SSH,或者平台限制使用 HTTPS + token 的方式,可以使用个人访问令牌(Personal Access Token)进行认证。
常见场景:
- 从 GitHub 私有仓库通过 HTTPS 拉取包。
- 使用 GitLab 的 Composer 包注册中心。
- 对接私有的 Packagist 服务(如 Private Packagist)。
操作方法:
- 在对应平台生成一个具有读取权限的 token(例如 GitHub 的 repo 范围)。
- 在项目根目录的 auth.json 文件中配置凭证:
{
"http-basic": {
"your-private-repo.com": {
"username": "your-token",
"password": "api-token-or-access-key"
}
}
} - 对于 GitHub 使用 HTTPS URL 时,可将 token 作为用户名,密码留空或也用 token:
"repositories": [
{
"type": "vcs",
"url": "https://github.com/username/private-package.git"
}
] - 确保 auth.json 不提交到版本控制,应在 .gitignore 中排除。
全局配置与环境变量支持
除了项目级的 auth.json,你也可以在 Composer 全局配置中设置凭证:
- 运行命令设置 HTTP Basic 认证:
composer config --global http-basic.your-domain.com username token - 支持使用环境变量注入敏感信息:
设置 COMPOSER_AUTH 环境变量,值为 JSON 字符串:
{"http-basic": {"example.com": {"username": "user", "password": "pass"}}} - CI/CD 环境中推荐使用此方式,避免明文写入文件。
基本上就这些。只要正确配置 SSH 或 token,Composer 就能顺利拉取私有包。关键是保证认证方式匹配仓库 URL 类型,并妥善管理密钥和令牌的安全性。










