首先配置SSH客户端通过代理或跳板机访问目标Git服务器,在~/.ssh/config中设置ProxyCommand或跳转主机,确保Git可通过SSH克隆仓库,再在composer.json中使用git@协议地址,最后测试SSH连通性,确认后Composer即可正常安装依赖。

当你使用 Composer 安装依赖时,如果目标 Git 仓库位于受限网络中(例如公司内网或需要通过 SSH 隧道访问),你可能需要配置 SSH 代理来让 Composer 正确克隆仓库。以下是具体操作步骤。
1. 配置 SSH 客户端使用代理
Composer 在执行 Git 操作时会调用系统中的 git 命令,而 git 使用 SSH 协议拉取代码时依赖于 ~/.ssh/config 文件的配置。你可以在这里设置 SSH 跳转或代理。
编辑或创建文件:~/.ssh/config
添加如下内容(根据你的实际情况修改):
- Host git.internal.company.com —— 目标 Git 服务器地址
- HostName git.internal.company.com —— 实际主机名
- User git —— SSH 用户名(Git 服务通常为 git)
- Port 22 —— 端口,可选,默认 22
- ProxyCommand nc -X 5 -x your.proxy.server:1080 %h %p —— 使用代理连接
示例配置:
Host git.internal.company.com
HostName git.internal.company.com
User git
Port 22
ProxyCommand nc -X 5 -x 192.168.100.10:1080 %h %p
说明:
- nc 是 netcat,需确保已安装(如 nmap-ncat 包)
- -X 5 表示使用 SOCKS5 代理,若为 HTTP 代理可用 -X connect
- -x 代理地址:端口 指定本地或跳板机上的代理服务
2. 使用跳板机(Bastion Host)作为中间代理
如果你不能直接访问目标 Git 服务器,但可以通过一台跳板机连接,则可以配置 SSH 跳转。
示例 ~/.ssh/config:
Host jump-host
HostName jump.company.com
User yourname
IdentityFile ~/.ssh/id_rsa_jump
Host git.internal.company.com
HostName git.internal.company.com
User git
ProxyCommand ssh -q jump-host nc %h %p
这样,所有对 git.internal.company.com 的 SSH 请求都会通过 jump-host 转发。
3. 确保 Composer 使用 SSH 协议
在 composer.json 中,确保包的源使用的是 SSH 地址:
"repositories": [
{
"type": "vcs",
"url": "git@git.internal.company.com:company/package.git"
}
]
不要使用 https:// 或其他协议,否则不会走 SSH 配置。
4. 测试 SSH 连接
在运行 Composer 前,先手动测试 SSH 是否能连通:
ssh -T git@git.internal.company.com
如果看到类似 “Hi! You've successfully authenticated.” 的提示,说明配置成功。
也可以测试 Git 克隆:
git clone git@git.internal.company.com:company/package.git
一旦 SSH 和 Git 可以正常工作,Composer 就能顺利拉取私有仓库。
基本上就这些。关键在于让系统级的 SSH 客户端能通过代理访问目标服务器,Composer 会自动继承这个能力。不需要额外配置 Composer 本身。只要 git 能克隆,Composer 就能安装。










