拥有原生体验版的本地局域网gitlab服务器

场景描述

  • gitlab服务器(ubuntu16.0.4),运行在内网,提供git服务
  • 云服务器(centos7),提供端口转发功能,为git服务器提供外网连通环境

遇到的问题

我开始使用了ssh远程端口转发功能,把云服务器的8080端口和2222端口分别转发到了git服务器的80和22端口,这样我就能通过121.40.150.93:8080的方式来访问我的git网页了,但是这里出现了一个问题

没有办法使用ssh协议来克隆仓库

虽然我之前找到了解决方案,可以通过一些配置来克隆仓库,但是这对不熟悉ssh或者新手来说太不友好了,这不是我想要的git服务器。

目标

我的目标只有一个,希望我在本地配置的git服务器,能达到gitlab官方服务器一样的使用感觉。
所以我现在需要解决的一个问题就是,使用云服务器的22端口来访问我的本地服务器,从而提供gitlab原声般的体验。

解决过程

因为我现在需要用到云服务器的22端口,那么云服务器原来的ssh服务器就不能走22端口了,所以接下来的任务,隐藏原服务器的22端口,修改成其他任意端口,我这里就用9468好了

阿里云服务器有安全组规则,所以要先在阿里云开启9468端口,要不然云服务器就无法登录了

修改ssh-server默认端口(云服务器)

vim /etc/ssh/sshd_config

在17行代码左右的配置,把Post修改为9468

Port 9468

重启sshd服务

/bin/systemctl restart sshd.service

使用autossh进行转发22端口(git服务器)

因为22端口是特权端口,只能以root运行,而且云服务器已经修改了ssh服务的端口了,为了建立这条隧道,首先要做的事情是添加一个配置配置

vim ~/.ssh/config

添加下面的内容

Host  server
        hostname 121.40.150.93
        user root
        port 9468

接着使用ssh远程端口转发功能,把云服务器22端口转发到本地22端口

ssh -NR 22:localhost:22 server

验证

接下来只要验证就可以了,点击我的git服务器进行体验

《拥有原生体验版的本地局域网gitlab服务器》上有5条评论

  1. 体验了一下,非常不错,赞一个👍!有个问题请教一下,http://git.crisen.org/ 这个是直接访问的你云服务器,是做了80端口的转发到git服务器吗?请问你是把所有到80端口的请求都转发出去了还是只是转发了访问git服务的请求,能否简单说说怎么实现的?

    1. 这个地方使用了一次nginx的反向代理,我首先使用反向隧道把云服务器的8080端口转发到了本地局域网git服务器的80端口,然后使用nginx把云服务器的80端口代理到了8080端口。

      1. 恩,好的,非常感谢!另外你这个评论系统有点不好使,每次我都得填name、email、website,有点麻烦,而且你给我回复了,我也不知道,还得打开你这个网页去看,为啥不换个disqus这样的呢?

发表评论