通过用户计算机从服务器隧道 git 请求



我工作的公司正在gitlab.company.net使用自托管的gitlab。gitlab只能从公司网络内部访问。我还有一个不在公司网络中的公司服务器
我希望能够在服务器上使用git,因为在开发过程中手动来回复制文件非常麻烦。理想情况下,该解决方案也适用于不同的用户,即根据谁在服务器上工作,连接将通过他们的计算机进行隧道传输。到目前为止,我试图让它与SSH隧道一起工作,但我不确定这是否可能,或者我是否做错了什么。

在服务器上,我将git配置为使用localhost作为gitlab.company.net:的代理

git config --global http.https://gitlab.company.net.proxy localhost:4443

我使用ssh登录,使用:

ssh -R 4443:gitlab.company.net:443 -i keyfile user@server-ip

因此,我希望通过代理设置,请求被重定向到localhost,并从那里重定向到我的计算机,因为-R选项,然后将其重定向到gitlab.company.net
它似乎有作用,因为我在尝试克隆时会得到不同的响应,这取决于我是否登录到公司网络:

fatal: unable to access 'https://gitlab.company.net/...': Received HTTP code 400 from proxy after CONNECT

是否:

fatal: unable to access 'https://gitlab.company.net/...': Failed to connect to localhost port 4443 after 0 ms: Connection refused

感谢您的帮助。非常感谢。

我无法使用https克隆,但我在这里找到了ssh的解决方案。

您需要使用-R port:gitlab.company.net:22连接到服务器,例如:

ssh -R 2020:gitlab.company.net:22 -i keyfile user@server-ip

然后,在服务器上,您可以通过将gitlab.company.net替换为localhost并指定端口号来进行克隆,例如:

git clone ssh://git@localhost:2020/....

最新更新