如何配置支持Git LFS的Git SSH隧道?
解决Git LFS通过SSH隧道访问私有GitLab的问题
问题根源
Git LFS默认采用HTTPS协议传输大文件,你当前的SSH隧道仅转发了GitLab的SSH端口(22),没有覆盖HTTPS流量,所以普通Git操作正常,但LFS命令失效。
两种解决方案
方案一:让Git LFS复用SSH通道(推荐)
不需要额外端口转发,只需修改Git配置,强制LFS通过SSH传输:
- 针对单个仓库生效:进入远程服务器上的目标Git仓库,执行:
git config lfs.ssh true - 全局生效(远程服务器上所有Git仓库都用SSH走LFS):
git config --global lfs.ssh true
配置完成后,LFS会和普通Git操作共用已有的22端口隧道,无需调整SSH配置。
方案二:转发GitLab的HTTPS端口(适用于必须用HTTPS的场景)
如果你的GitLab LFS强制走HTTPS,需要新增HTTPS端口的反向转发:
- 修改工作电脑的
.ssh/config:Host remoteServer HostName remoteServer User username RemoteForward 127.0.0.1:2222 gitlabServer:22 RemoteForward 127.0.0.1:4433 gitlabServer:443 # 新增:转发GitLab的HTTPS端口443到远程服务器的4433端口 - 更新远程服务器上的Git仓库地址:
把仓库的HTTPS远程地址替换为本地转发的端口,比如原地址是https://gitlabServer/your/project.git,执行:git config remote.origin.url https://localhost:4433/your/project.git - 处理证书问题(如果GitLab用自签名证书):
若远程服务器无法验证GitLab的证书,可临时关闭SSL验证(不推荐生产环境):
或者将GitLab的证书导入远程服务器的系统信任存储。git config --global http.sslVerify false
为什么之前的尝试失效?
你之前添加的额外转发可能没对应LFS的实际传输端口,或者没调整Git LFS的传输协议配置,导致流量没走隧道。
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

