拥有原生体验版的本地局域网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服务器进行体验