如何建立一个git ssh隧道与git lfs工作?



我的工作配置是我有我的工作桌面,我使用VPN连接到私人gitlab服务器。我还使用这个桌面ssh到远程服务器来完成我的工作。在这个桌面和远程服务器上,我以这种方式配置了SSH隧道:如何配置系统通过SSH反向隧道/代理来使用git ?为了能够通过我的工作桌面上的VPN隧道访问我的私人gitlab服务器。当我不使用git lfs时,这个配置可以访问我的gitlab服务器。

但是,这个配置似乎不支持git lfs。我认为我需要以某种方式隧道更多的端口,但我不确定如何更改远程服务器上的.ssh/配置文件以引用正确的端口。作为参考,下面是我工作桌面上的.ssh/config文件:

Host remoteServer
HostName remoteServer
User username
RemoteForward 127.0.0.1:2222 gitlabServer:22

下面是我在remoteServer上使用的。ssh/config:

HOST gitlabServer
hostname localhost
port 2222

我如何修改这些文件,或者做一些其他的事情,通过我使用的ssh隧道来支持git lfs ?

我尝试在我的工作桌面上添加额外的RemoteForward行,在远程服务器上添加LocalForward行来转发额外的端口,但无法使我的git lfs命令工作。

Git LFS有两种通过SSH连接的方式。第一种也是较老的技术是通过SSH连接凭据,然后通过HTTPS执行实际的上传和下载操作。较新的,但支持较差的选项是使用纯SSH连接,我不知道有任何主要的伪造器支持此连接。

因此,为了将数据传送到GitLab服务器,还需要在远程机器上本地转发端口443(如果使用不安全的纯HTTP,则需要转发端口80)。

还有另一个要求,因为GitLab服务器被设计为在Git LFS协议中分发指向服务器本身的url。如果您要重新路由数据,那么需要告诉Git LFS重写您正在使用的url。这需要运行git config --global lfs.transfer.enablehrefrewrite true并使用url.*.insteadOf(详细运行git config --help)将HTTP或HTTPS URL重写为使用您转发的位置的服务器。

但是,如果您使用HTTPS,则必须确保GitLab服务器的证书也通过您正在重写的主机名或IP地址进行验证。因此,如果您想将其重写为https://127.0.0.1:4443,那么GitLab服务器将需要在其证书中包含127.0.0.1,而这几乎肯定不会。因此,只有当您使用纯HTTP时,这才有可能真正起作用。