场景描述
- 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服务器进行体验