我工作的公司正在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/....