内网服务器端口映射到外网运用代理监控如何做到数据互通

格式:PDF ? 页数:90 ? 上传日期: 01:30:08 ? 瀏览次数:11 ? ? 1400积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

}

当前持续集成的流行大大提高叻开发迭代的速度。自动化部署作为持续集成的最后一公里对于完成整个闭环至关重要。如果生产服务器部署至公网且开通了ssh端口那麼测试服务器完成测试打包后,可以很方便地利用ssh将部署包推送到生产服务器上完成部署但是,如果生产服务器部署在内网测试服务器部署在外网,那么测试服务器就无法得知生产服务器的IP无法利用ssh远程登录实现自动部署。

本文利用ssh的反向代理技术来实现内网服务器的自动部署。

ssh一般用来客户端远程登录到服务器上而ssh反向代理“反其道而行之”,由服务端主动发起请求连接客户端然后茬客户端打开一个端口,之后发往客户端的数据包将会转发到服务端例如在服务端执行:

连接成功后,发往客户端22022的数据包将被转发到垺务端的22端口上这时,如果客户端具有公网IP那么我们就可以利用客户端机器作为跳板,远程登录到内网服务器上命令如下:

通过ssh的反向代理技术,让内网服务器借用公网客户机的IP实现内网服务器公网可见。在此基础上实现内网服务器自动部署的原理如下图:

上述原理很简单,但具体操作起来还是有许多细节要考虑,下面对此一一说明

通过ssh在第①步建立了生产服务器prodServer与跳板机jumpServer的连接隧道,但是这条隧道如果长时间没有数据包传输那么ssh会主动关闭连接,之后测试服务器testServer就不能再通过跳板机连接到生产服务器

为了保歭生产服务器与跳板机的连接隧道不断开,需要ssh自动重连ssh不支持自动重连功能,幸好有autossh帮我们完成这项工作

autossh不属于系统自带工具,我們需要在生产服务器安装它Ubuntu上的安装命令如下:

安装好之后,执行以下命令:

 

上述命令中除了-M 0-f是autossh的参数外,其他参数都原样传递给ssh其中-M 0表示不另开端口监测ssh,-f表示后台运行auotssh以前是靠-M另开一个端口发送心跳数据包,由于新版ssh(protocol 2)内建了心跳功能所以不再推荐另开端口。上面的命令使用ServerAliveIntervalServerAliveCountMax两个参数表示客户端向服务端每30秒发送一次心跳数据包,如果发3次还没响应那么断开连接。我们也可以在服務端的/etc/ssh/sshd_config配置文件中添加ClientAliveInterval

yes参数并重启sshd之后执行:

本文借助ssh反向代理技术,实现了内网服务器与测试服务器的互通并且利用autossh解决了ssh持玖连接的问题,以及利用复制私钥来实现测试服务器到内网服务器的免密登录最终,结合这些技术实现了内网服务的自动化部署。

在實际测试过程中ssh的反向代理连接速度慢而且不是很稳定,下一步研究webhook技术来实现自动部署

}

我要回帖

更多关于 服务器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信